コガネブログ

平日更新を目標にUnityやC#などのゲーム開発アレコレを書いていきます

Unity

【Unity】Hierarchy を拡張する多機能アセット「PRO Hierarchy + Memory Monitoring + Navigator for Selecting」紹介

はじめに この記事は「Unity アセット真夏のアドベントカレンダー 2017」の8/18の記事です 昨日は ゆう さんの「開発効率を上げ、手軽に拡張できるFSM「Arbor2」紹介」でした 明日は 青木とと さんの「」です 概要 2017/6/15 に、エディタ拡張用のアセット …

【Unity】公式の技術情報が記載されているサイト

Arduino はじめました

お盆休み中に「Arduino」を触って遊んでいたので その備忘録をまとめておきます 購入したモノ Arduinoをはじめようキット出版社/メーカー: スイッチサイエンスメディア: おもちゃ&ホビー購入: 64人 クリック: 1,164回この商品を含むブログ (50件) を見る Ar…

【Unity】Project ビューのフォルダを彩る「Rainbow Folders」紹介

はじめに この記事は「Unity アセット真夏のアドベントカレンダー 2017」の8/14の記事です 昨日は Limes さんの「Set Pass Callを劇的に減らす「Mesh Baker」の使い方と、いくつかのモデルをHoloLensで表示した動作結果」でした 明日は kitposition さんの「…

【Unity】Inspector をカスタマイズするエディタ拡張用アセット「Odin - Inspector and Serializer」を64件の記事に分けて紹介

はじめに この記事は「Unity アセット真夏のアドベントカレンダー 2017」の8/5の記事です 昨日は ぽうひろ さんの「DoozyUIでUnityUIを時短de簡単に作っちゃおう!!」でした 明日は ゆーじ さんの「DaydreamのコントローラーをHoloLensで使う」です 概要 20…

【Unity】ことわざ通り遊んで高得点を狙うゲーム「ネコにこばん!ブタにしんじゅ!」をunityroomに公開しました

ネコにこばん!ブタにしんじゅ! | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう 昔、Unity で Android / iOS 向けに開発したゲームを 昨日、WebGL 版に移植してunityroomに公開しました ゲーム概要 ことわざ通りに遊ぼう! ●ゲ…

【Unity】色を駆使して高得点を狙うアクションパズルゲーム「色集め」をunityroomに公開しました

色集め | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう 昔、FlashDevelop(http://www.flashdevelop.org/)を使用して作ったゲームを 昨日、Unityに移植してunityroomに公開しました ゲーム概要 色を駆使して高得点を狙う アク…

【おすすめスライド】「TextMesh Pro を使いこなす!」

TextMesh Pro を使いこなす! from UnityTechnologiesJapan

【Unity】Unity 2017.1 新機能「SwitchActiveBuildTargetAsync」

using UnityEditor; using UnityEditor.Build; using UnityEngine; public class ExampleClass : IActiveBuildTargetChanged { public int callbackOrder { get { return 0; } } [MenuItem( "Tools/Switch Platform" )] public static void SwitchPlatform()…

【Unity】Google Play で使用できる versionCode の最大値

https://developer.android.com/studio/publish/versioning.html 警告: Google Play で使用できる versionCode の最大値は 2100000000 です。

【Unity】画像ファイルにアルファが含まれているかどうかを確認する方法

参考サイト様

【Unity】JsonUtilityを使用して出力するJsonファイルの容量を少しでも減らす

[Serializable] public class Character { public int m_id ; public string m_name ; } ... var ch = new Character(); var json = JsonUtility.ToJson( ch, true ); { "m_id": 0, "m_name": "" } 例えばこのような処理で出力したJSONを テキストファイルで…

【Unity】AndroidにおいてFirebaseを使用しているアプリがイベント登録時にハングするようになった

発生状況 Unity 5.4.3f1 Android IL2CPPビルド Firebase SDK導入済み Firebase.TokenReceived 参照時にアプリがハングする 原因 UnityのAndroid IL2CPPビルドのキャッシュが壊れていた 修正方法 下記のファイルを削除してからROMをビルドし直したら直った il…

【Unity】ソフトウェアキーボードが表示されているかどうかを取得できるプロパティ

TouchScreenKeyboard.visible 参考サイト様

【Unity】開発中のアプリがメモリリークで強制終了するようになった時に対応したこと

インスタンスが破棄される時にメンバ変数に定義しているすべてのデリゲートにnullを代入するようにした MonoBehaviour を継承しているクラスの場合 OnDestroy 関数ですべてのデリゲートにnullを代入する 対応前 public class Example : MonoBehaviour { publ…

【Unity】【NGUI】非アクティブな UISprite の大きさを画像サイズに合わせることができる拡張メソッド

public static class UISpriteExt { public static void Snap( this UISprite self ) { var data = self.GetAtlasSprite(); self.width = data.width ; self.height = data.height ; } } var sprite = GetComponent<UISprite>(); sprite.Snap(); NGUIがデフォルトで用</uisprite>…

【Unity】【NGUI】文字列にカラータグを含む場合 true を返す拡張メソッド

using System.Text.RegularExpressions; public static class StringExt { private static readonly Regex COLOR_TAG_PATTERN = new Regex( @"(\[[0-9A-F]{6}\])", RegexOptions.IgnoreCase ); public static bool ContainsColorTag( this string self ) { r…

【Unity】OnPreprocessTextureでテクスチャフォーマットにETCやPVRTCを設定する方法

Unity 5.4.3f1 public class TextureAssetPostProcessor : AssetPostprocessor { private void OnPreprocessTexture() { var impoter = assetImporter as TextureImporter; var maxTextureSize = 2048; var compressionQuality = 50; impoter.SetPlatformTex…

【Unity】OnPreprocessTextureでテクスチャのサイズを取得する方法

Unity 5.4.3f1 public class TextureAssetPostProcessor : AssetPostprocessor { private void OnPreprocessTexture() { var impoter = assetImporter as TextureImporter; var size = new object[ 2 ] { 0, 0 }; var method = typeof( TextureImporter ).Ge…

【Unity】OnPreprocessTextureでテクスチャがアルファチャンネルを所持しているかどうかを確認する方法

Unity 5.4.3f1 public class TextureAssetPostProcessor : AssetPostprocessor { private void OnPreprocessTexture() { var impoter = assetImporter as TextureImporter; var haveAlpha = impoter.DoesSourceTextureHaveAlpha(); Debug.Log( haveAlpha ); …

【おすすめスライド】「【Unity道場】パフォーマンス最適化のポイント」

【Unity】DOTween.Tweenがnullではない場合にのみComplete関数を呼び出す拡張メソッド

public static class TweenExt { public static void CompleteIfNotNull( this Tween self ) { if ( self == null ) return; self.Complete(); } }

【Unity】DOTween.Tweenがnullではない場合にのみKill関数を呼び出す拡張メソッド

/// <summary> /// Tween 型の拡張メソッドを管理するクラス /// </summary> public static class TweenExt { /// <summary> /// Sequence を削除します /// </summary> public static void KillIfNotNull( this Tween self, bool complete = false ) { if ( self == null ) return; self.Kill( com…

【Unity】Android端末においてソフトウェアキーボードの領域を取得する

public int GetKeyboardSize() { #if !UNITY_EDITOR && UNITY_ANDROID using ( var unityPlayer = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" ) ) { var view = unityPlayer .GetStatic<AndroidJavaObject>( "currentActivity" ) .Get<AndroidJavaObject>( "mUnityPlayer" ) .Call<AndroidJavaObject>( "</androidjavaobject></androidjavaobject></androidjavaobject>…

【Unity】iOS端末においてソフトウェアキーボードの領域を取得する

TouchScreenKeyboard.area ※Androidでは取得不可能 参考サイト様 docs.unity3d.com

【Unity】Spineでタイムスケールを無視する方法

var animation = GetComponent<SkeletonAnimation>(); animation.timeScale = 1 / Time.timeScale;</skeletonanimation>

【Unity】Inspectorに表示されるパラメータをUnityエディタ再生中のみ編集不可能にするPropertyAttribute

using UnityEngine; public class Example : MonoBehaviour { [UnchangeableInPlaying] public int m_id; [UnchangeableInPlaying] public string m_name; }

【Unity】Inspectorに表示されるパラメータを編集不可能にするPropertyAttribute

using UnityEngine; public class Example : MonoBehaviour { [Unchangeable] public int m_id; [Unchangeable] public string m_name; }

【Unity】Androidにおいて、ソフトウェアキーボードの文字色が白色になり、背景色と同化して見えなくなる不具合の修正方法

遭遇した環境 Unity 5.4.3f1 修正方法 AndroidManifest.xml の application タグに下記の記述を追加する

【Unity】JsonUtilityは多次元配列やジャグ配列をサポートしていない

開発環境 Unity 5.4.3f1 using UnityEngine; public class NewBehaviourScript : MonoBehaviour { class ExampleClass { public int[] list1 = new int[]{ 1,2,3,4,5 }; public int[,] list2 = new int[,] { { 1,2,3,4,5 }, { 1,2,3,4,5 } }; public int[][]…

【Unity】App Storeに掲載されるipaの容量を確認するために使用している方法

.ipaを.zipに変換して展開して アプリ名以外のファイルをすべて選択してプロパティを見る 参考サイト様

【Unity】iOSの「CFBundleVersion」と「CFBundleShortVersionString」に紐付くパラメータ

.plist Unity CFBundleVersion Build CFBundleShortVersionString Version

【Unity】【NGUI】UIRoot の子オブジェクトのグローバル座標を設定する拡張メソッド

using UnityEngine; /// <summary> /// UIWidget 型の拡張メソッドを管理するクラス /// </summary> public static class UIWidgetExt { /// <summary> /// UIRoot の子オブジェクトのグローバル座標を返します /// </summary> public static Vector3 GetGlobalPosition( this Component self ) { i…

【Unity】【NGUI】UIRoot の子オブジェクトのグローバル座標を返す拡張メソッド

using UnityEngine; /// <summary> /// UIWidget 型の拡張メソッドを管理するクラス /// </summary> public static class UIWidgetExt { /// <summary> /// UIRoot の子オブジェクトのグローバル座標を返します /// </summary> public static Vector3 GetGlobalPosition( this Component self ) { i…

【Unity】指定されたオブジェクトの名前を返す、オブジェクトが null の場合は既定値を返す拡張メソッド

using UnityEngine; /// <summary> /// UnityEngine.Object 型の拡張メソッドを管理するクラス /// </summary> public static class UnityEngineObjectExt { /// <summary> /// 名前を返します。null の場合は既定値を返します /// </summary> public static string GetNameOfDefault( this UnityEn…

【Unity】【NGUI】BoxColliderの位置とサイズをUIWidgetのパラメータに合わせて調整するボタンをInspectorに追加するエディタ拡張

using System.Linq; using UnityEditor; using UnityEngine; [CanEditMultipleObjects] [CustomEditor( typeof( BoxCollider ), true )] public sealed class BoxColliderInspector : Editor { public override void OnInspectorGUI() { DrawDefaultInspecto…

【Unity】【NGUI】BoxColliderの位置とサイズをUIWidgetのパラメータに合わせて調整するコンテキストメニューを追加するエディタ拡張

using UnityEditor; using UnityEngine; public static class BoxColliderContextMenu { [MenuItem( "CONTEXT/BoxCollider/Adjust To Match" )] private static void AdjustToMatch( MenuCommand command ) { var boxCollider = command.context as BoxColli…

【Unity】ネットワークにアクセス可能かどうかを取得する方法

Application.internetReachability を使用する switch ( Application.internetReachability ) { case NetworkReachability.NotReachable: Debug.Log( "ネットワークが使えない" ); break; case NetworkReachability.ReachableViaCarrierDataNetwork: Debug.L…

【Unity】指定されたオブジェクトがプレハブではない場合 true を返す拡張メソッド

using UnityEditor; /// <summary> /// UnityEngine.Object 型の拡張メソッドを管理するクラス /// </summary> public static partial class UnityEngineObjectExt { /// <summary> /// 指定されたオブジェクトがプレハブではない場合 true を返します /// </summary> public static bool IsNotPref…

【Unity】指定されたオブジェクトがプレハブの場合 true を返す拡張メソッド

using UnityEditor; /// <summary> /// UnityEngine.Object 型の拡張メソッドを管理するクラス /// </summary> public static class UnityEngineObjectExt { /// <summary> /// 指定されたオブジェクトがプレハブの場合 true を返します /// </summary> public static bool IsPrefab( this UnityEng…

【Unity】指定されたオブジェクトの PrefabType を返す拡張メソッド

using UnityEditor; /// <summary> /// UnityEngine.Object 型の拡張メソッドを管理するクラス /// </summary> public static partial class UnityEngineObjectExt { /// <summary> /// 指定されたオブジェクトの PrefabType を返します /// </summary> public static PrefabType GetPrefabType( th…

【Unity】Unity5.4.4f1でAndroidのIL2CPP版のROMをビルドするとキャッシュが肥大化していく

Unity5.4.4f1でAndroidのIL2CPP版のROMをビルドしていたところ、 ビルドを繰り返すたびにLibraryフォルダ内の 下記のフォルダのサイズが少しずつ増えていく現象が発生し、 ビルドマシンの容量が圧迫される問題に遭遇した il2cpp_android_armeabi-v7a il2cpp_…

【Unity】iOS10の端末においてFPSが60の状態でスリープから復帰するとアプリが強制終了することがある

再現したUnityのバージョン Unity5.6.0b2 Unity5.5.0p3 Unity5.4.4f1 発生条件 iOS10の端末においてFPSが60の状態でスリープから復帰するとアプリが強制終了する 解決方法 サスペンドする時にFPSを30に変更する private int m_prevFps; private void OnAppli…

【NGUI】NGUIでマスクを使用する方法

UIPanel を配置する 「Clipping」を「Texture Mask」に設定する マスクに使用するテクスチャを設定する UIPanel の子供にマスクを適用したいオブジェクトを配置する

【Unity】Windows 7 における Unity エディタのログの保存場所

C:\Users\【ユーザー名】\AppData\Local\Unity\Editor

【Unity】Google Cardboard SDKを使用しているUnityプロジェクトのバージョンを5.5から5.6βにアップデートした際にAndroid版のROMで起動時に発生したエラー

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.hand.cham/com.google.unity.GoogleUnityActivity}: java.lang.ClassNotFoundException: Didn't find class "com.google.unity.GoogleUnityActivity" on path: DexPathList[[…

【Unity】NGUIのUISpriteのサイズが画像サイズと等しいかどうかを確認する拡張メソッド

using NwgLibrary; namespace Cham { /// <summary> /// UISprite 型の拡張メソッドを管理するクラス /// </summary> public static class UISpriteExt { /// <summary> /// スナップされている場合 true を返します /// </summary> public static bool IsSnapped( this UISprite self ) { var data…

【Unity】ログ出力を無効化する時に「logEnabledプロパティ」を使った場合と「Conditional属性」を使った場合の処理時間の検証

using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var count = 1000000; { Debug.logger.logEnabled = false; var startTime = Time.realtimeSinceStartup; for ( int i = 0; i < count; i++ ) { Debug.Log( i ); } var e…

【Unity】Scene ビューから不要なオブジェクトを非表示にする

Unity エディタ右上の「Layers」を開いて 不要なオブジェクトを表示しているレイヤーを非表示にする 例えば、2Dの作業をしている時に3Dモデルを非表示にしておきたい時に役立ちます

【Unity】Unity5.5でスクリプトからAndroidのビルド方法をIL2CPPに変更する方法

下記のようなプログラムを作成する using UnityEditor; public static class ExampleClass { [MenuItem( "Tools/Example" )] public static void Example() { PlayerSettings.SetScriptingBackend( BuildTargetGroup.Android, ScriptingImplementation.IL2CP…