コガネブログ

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

Unity5

【Unity】検索欄を表示するエディタ拡張

目次 概要 private string mText; private void OnGUI() { mText = EditorGUIUtils.SearchField( new Rect( 0, 0, 100, 100 ), mText ); } 類似記事

【Unity】Path.Combine( params string[] paths )を使用できるようにする関数

using System.IO; public static class PathUtils { /// <summary> /// 文字列の配列を 1 つのパスに結合します /// </summary> public static string Combine( params string[] paths ) { return paths.Aggregate( ( a, b ) => Path.Combine( a, b ) ); } } PathUtils.Combine(…

【Unity】区切り文字にスラッシュを使用してパスを連結する関数 その2

using System.IO; public static class PathUtils { /// <summary> /// 文字列の配列を 1 つのパスに結合します /// </summary> public static string Combine( params string[] paths ) { return paths .Aggregate( ( a, b ) => Path.Combine( a, b ) ) .Replace( "\\", "/" );…

【Unity】区切り文字にスラッシュを使用してパスを連結する関数

using System.IO; public static class PathUtils { /// <summary> /// 2 つの文字列を 1 つのパスに結合します /// </summary> public static string Combine( string path1, string path2 ) { return Path .Combine( path1, path2 ) .Replace( "\\", "/" ); } } Path.Combine(…

【Unity】区切り文字にスラッシュを使用して指定したディレクトリ内のファイル名を返す関数

using System.IO; using System.Linq; public static class DirectoryUtils { /// <summary> /// <para>指定したディレクトリ内のファイルの名前 (パスを含む) を返します</para> /// <para>パスの区切り文字は「\\」ではなく「/」です</para> /// </summary> public static string[] GetFiles( string pat…

【Unity】メッセージに書式指定可能なAssert系の関数

AssertUtils.IsNullFormat( nullObj, "{0}", "メッセージ" ); AssertUtils.IsNotNullFormat( notNullObj, "{0}", "メッセージ" ); AssertUtils.IsTrueFormat( true, "{0}", "メッセージ" ); AssertUtils.IsFalseFormat( false, "{0}", "メッセージ" ); Asser…

【Unity】メッセージに書式指定可能なMustExtensions系の拡張メソッド

nullObj .MustBeNullFormat( "{0}", "メッセージ" ); notNullObj .MustNotBeNullFormat( "{0}", "メッセージ" ); canJump .MustBeTrueFormat( "{0}", "メッセージ" ); isDead .MustBeFalseFormat( "{0}", "メッセージ" ); health .MustBeEqualFormat( 0, "{0…

【Unity】Component型のインスタンスのnullチェックを省略可能な拡張メソッド

// コンポーネントからBoxColliderを取得する // コンポーネントがnullの場合は何もしない BoxCollider result = null; if ( com != null ) { result = com.GetComponent<BoxCollider>(); } 下記の拡張メソッドを使用することで Component型のインスタンスの上記のようなn</boxcollider>…

【Unity】GameObject型のインスタンスのnullチェックを省略可能な拡張メソッド

// ゲームオブジェクトをアクティブにする // ゲームオブジェクトがnullの場合は何もしない if ( go != null ) { go.SetActive( true ); } // ゲームオブジェクトからBoxColliderを取得する // ゲームオブジェクトがnullの場合は何もしない BoxCollider resu…

【Unity】Destroy may not be called from edit mode! Use DestroyImmediate instead.

Destroy may not be called from edit mode! Use DestroyImmediate instead. Also think twice if you really want to destroy something in edit mode. Since this will destroy objects permanently. エディタ拡張の処理でGameObject.Destroyを呼び出すと…

【Unity】The same field name is serialized multiple times in the class or its parent class. This is not supported: -> AAAA(MonoBehaviour) BBBB(CCCC) DDDD

The same field name is serialized multiple times in the class or its parent class. This is not supported: -> AAAA(MonoBehaviour) BBBB(CCCC) DDDD 基底クラスと派生クラスで同名のフィールドをシリアライズ可能にした場合 上記のエラーが発生します …

【Unity】「Assert.IsNull」「Assert.IsNotNull」に複数の引数を渡せる関数を定義する

AssertUtils.IsNull( obj1, obj2 ); AssertUtils.IsNull( obj1, obj2, obj3 ); AssertUtils.IsNull( obj1, obj2, obj3, obj4 ); AssertUtils.IsNull( obj1, obj2, "null ではないオブジェクトが存在します" ); AssertUtils.IsNull( obj1, obj2, obj3, "null …

【Unity】RandomRangeInt can only be called from the main thread.

using UnityEngine; public class Player : MonoBehaviour { private int mValue = Random.Range( 0, 10 ); } このように変数初期化子でRandom.Range関数を使用すると 下記のようなエラーが発生します RandomRangeInt can only be called from the main thre…

【Unity】コンポーネントを破棄する拡張メソッド

var character = gameObject.GetComponent<Character>(); // 従来の方法 GameObject.Destroy( character ); // 拡張メソッドの方法 character.Destroy();</character>

【Unity】GameObject (named 'XXXX') references runtime script in scene file. Fixing!

using UnityEngine; public class Player : MonoBehaviour { public Enemy mEnemy; } using UnityEngine; public class Enemy : MonoBehaviour { } 例えば上記のようなスクリプトが存在して それぞれをゲームオブジェクトにアタッチして参照を設定していたと…

【Unity】指定されたすべてのシーンファイルに対して一括で処理を行う汎用関数

using UnityEditor; using UnityEngine; public class ExampleClass { [MenuItem( "Tools/Example" )] static void Example() { var dirList = new [] { "Assets/Scenes", }; EditorUtils.ApplyToScenesByDirectoryList( dirList, c => { Debug.Log( c ); } …

【Unity】指定されたすべてのシーンファイルに対して一括で処理を行うエディタ拡張

概要 dirList配列に対象のシーンファイルが格納されている ディレクトリのパスを記述する TODOコメントの場所に一括で行いたい処理を記述する 関連記事

【Unity】「第32回代々木Unity勉強会」でエディタ拡張について発表させていただきました

「第32回代々木Unity勉強会」で エディタ拡張について発表させていただきました 発表資料をSlideShareに公開したので共有します 資料内容 エディタ拡張の基本 Hierarchy ビューの拡張 Project ビューの拡張 Scene ビューの拡張 参考アセット 関連記事

【Unity】TweenライブラリのGC Allocを知る

下記の条件下における GC Alloc を調査 0 から 1 の値を 1 秒間繰り返し変化させる処理を登録 毎フレーム呼び出されるコールバック関数を登録 iTween using UnityEngine; public class ExampleClass : MonoBehaviour { private float mValue; void Awake() {…

【Unity】Projectビューにファイル数を表示するエディタ拡張

概要 関連記事

【Unity】Projectビューにエクスプローラでファイルを開くボタンを表示するエディタ拡張

概要 関連記事

【Unity】Unity 5.0 新機能「UnityEngine.iOS.Device」

Unity 5.0 から「UnityEngine.iOS.Device」が追加されました このクラスを使用することでアプリが動作しているiOS端末の 世代やバージョンなどの情報を取得できます using UnityEngine; using UnityEngine.iOS; public class ExampleClass : MonoBehaviour {…

【Unity】Sceneビューにボタンを表示するエディタ拡張

a-s.hatenablog.com/entry/2016/06/28/100000:embed] 概要 関連記事

【Unity】Projectビューにアセットの容量を表示するエディタ拡張

概要 参考サイト様 http://yas-hummingbird.blogspot.jp/2010/02/c.html 関連記事

【Unity】Unity 5.0 新機能「RuntimeInitializeOnLoadMethodAttribute」

Unity 5.0 から「RuntimeInitializeOnLoadMethodAttribute」が追加されました この属性をstatic関数に適用することでゲーム起動時にその関数が呼び出されます using UnityEngine; public class ExampleClass { [RuntimeInitializeOnLoadMethod] private stat…

【Unity】NGUIで使用可能なBBCodeを文字列から削除して返す拡張メソッド

using System.Text.RegularExpressions; public static class StringExtensions { private const RegexOptions OPTIONS = RegexOptions.IgnoreCase; public static string RemoveBBCode( this string self ) { self = Regex.Replace( self, @"\[b\](.*)\[\/b…

【Unity】Unity 5.1 新機能「UnityEngine.HelpURLAttribute」

Unity 5.1 から「UnityEngine.HelpURLAttribute」が追加されました この属性をMonoBehaviourを継承したクラスに適用することで Inspector上でヘルプアイコンをクリックされた時に表示するサイトを設定できます using UnityEngine; [HelpURL( "http://baba-s.…

【Unity】Unity 5.1 新機能「UnityEngine.ColorUsageAttribute」

Unity 5.1 で「UnityEngine.ColorUsageAttribute」が追加されました この属性をColor型のpublic変数に適用することで カラーピッカーの表示を変えることができます Unity 5.1 以前 using UnityEngine; public class ExampleClass : MonoBehaviour { public C…

【Unity】Unity 5.1 新機能「UnityEngine.CreateAssetMenuAttribute」

Unity 5.1 で「UnityEngine.CreateAssetMenuAttribute」が追加されました この属性をScriptableObjectを継承したクラスに適用することで そのクラスの.assetを「Assets>Create」メニューから作成できるようになります using UnityEngine; [CreateAssetMenu] …

【Unity】Unity 5.1 新機能「UnityEngine.Assertions.Must.MustExtensions」

Unity 5.1 で「UnityEngine.Assertions.Must.MustExtensions」が追加されました このクラスを使用することで値が正常であるかどうかを確認できます 値が不正の場合はメッセージを投げます 関数 説明 MustBeNull 値がnullであることを保証します MustNotBeNul…