コガネブログ

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

【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】【Tips】Textで書式指定文字列を設定しやすくする拡張メソッド

using UnityEngine.UI; public static class UITextExtensions { public static void SetText( this Text self, string format, params object[] args ) { self.text = string.Format( format, args ); } } var text = GetComponent<Text>(); text.SetText( "{0}/{</text>…

【Unity】Mathf.Clampの拡張メソッド

using UnityEngine; public static class IntExtensions { public static float Clamp( this int value, int min, int max ) { return Mathf.Clamp( value, min, max ); } } public static class FloatExtensions { public static float Clamp( this float v…

【Unity】NGUIのUISpriteに有効なスプライト名が設定されているかどうかを確認する拡張メソッド

using System.Linq; public static class UISpriteExtensions { /// <summary> /// 有効なスプライト名が設定されている場合 true を返します /// </summary> public static bool IsValidSpriteName( this UISprite self ) { var spriteName = self.spriteName; var spriteList …

【Unity】LineRendererの頂点をVector3型の配列やリストで一括で設定できる拡張メソッド

using UnityEngine; public static class LineRendererExtensions { public static void SetPositions( this LineRenderer self, IList<Vector3> positions ) { self.SetVertexCount( positions.Count ); for ( int i = 0; i < positions.Count; i++ ) { self.SetPosi</vector3>…

【Unity】Plane.Raycastで一時変数を宣言する必要がない拡張メソッド

using UnityEngine; public static class PlaneExtensions { public static float Raycast( this Plane self, Ray ray ) { float enter; self.Raycast( ray, out enter ); return enter; } }

【Unity】無効なコンポーネントがアタッチされているかどうかを返す拡張メソッド

using UnityEngine; using System.Linq; public static class GameObjectExtensions { /// <summary> /// 無効なコンポーネントがアタッチされている場合 true を返します /// </summary> public static bool HasMissingScript( this GameObject self ) { return self .GetCompo…

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

ソースコード 使い方 nullObj .MustBeNullFormat( "{0}", "メッセージ" ); notNullObj .MustNotBeNullFormat( "{0}", "メッセージ" ); canJump .MustBeTrueFormat( "{0}", "メッセージ" ); isDead .MustBeFalseFormat( "{0}", "メッセージ" ); health .MustB…

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

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

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

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

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

ソースコード 使い方 var character = gameObject.GetComponent<Character>(); // 従来の方法 GameObject.Destroy( character ); // 拡張メソッドの方法 character.Destroy(); 関連記事</character>

【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\](.*)…

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

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

【Unity】OnGUIで表示するテキストの幅と高さをGUIStyleから取得する拡張メソッド

概要 using UnityEditor; using UnityEngine; public sealed class ExampleClass : EditorWindow { [MenuItem( "Tools/Example" )] private static void Example() { GetWindow<ExampleClass>(); } private void OnGUI() { var text = "ピカチュウ" ; var size = EditorSty</exampleclass>…

【Unity】TransformのTranslate関数の拡張メソッド

ソースコード using UnityEngine; public static class TransformExtensions { /// <summary> /// X 軸方向に移動します /// </summary> public static void TranslateX( this Transform self, float x ) { self.Translate( x, 0, 0 ); } /// <summary> /// Y 軸方向に移動します /// </summary> pu…

【Unity】DateTime 型をわかりやすい形式の文字列に変換する拡張メソッド

はじめに var dt = new DateTime( 2013, 3, 3, 12, 34, 56 ); Debug.Log( dt.ToString() ); // 3/3/2013 12:34:56 PM Debug.Log( dt.ToShortDateString() ); // 3/3/2013 Debug.Log( dt.ToLongDateString() ); // Sunday, March 03, 2013 Debug.Log( dt.ToSh…

【Unity】インターフェイスを指定して子オブジェクトから複数のコンポーネントを取得する拡張メソッド

ソースコード using System.Collections.Generic; using UnityEngine; public static class GameObjectExtensions { /// <summary> /// インターフェイスを指定して子オブジェクトから複数のコンポーネントを取得します /// </summary> public static T[] GetInterfacesOfCompon…

【Unity】インターフェイスを指定して子オブジェクトからコンポーネントを取得する拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExtensions { /// <summary> /// インターフェイスを指定して子オブジェクトからコンポーネントを取得します /// </summary> public static T GetInterfaceOfComponentInChildren<T>( this GameObject self, bool i</t>…

【Unity】インターフェイスを指定して複数のコンポーネントを取得する拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExtensions { /// <summary> /// インターフェイスを指定して複数のコンポーネントを取得します /// </summary> public static T[] GetInterfacesOfComponent<T>( this GameObject self ) where T : class { var re</t>…

【Unity】インターフェイスを指定してコンポーネントを取得する拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExtensions { /// <summary> /// インターフェイスを指定してコンポーネントを取得します /// </summary> public static T GetInterfaceOfComponent<T>( this GameObject self ) where T : class { foreach ( var n</t>…

【Unity】Destroy関数の拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExtensions { /// <summary> /// 破棄します /// </summary> public static void Destroy( this GameObject self ) { GameObject.Destroy( self ); } } 使い方 // GameObject 型の static 関数で呼び出し GameOb…

【Unity】DontDestroyOnLoad関数の拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExtensions { /// <summary> /// 新しいシーンを読み込む時に自動で破棄されないようにします /// </summary> public static void DontDestroyOnLoad( this GameObject self ) { GameObject.DontDestroyOnLoad( …

【Unity】Vector3 型の x, y, z がすべて同じ値かどうかを返す拡張メソッド

ソースコード using UnityEngine; public static class Vector3Extensions { public static bool IsUniform( this Vector3 self ) { return Mathf.Approximately( self.x, self.y ) && Mathf.Approximately( self.x, self.z ); } } 使い方 var v1 = new Vect…

【Unity】自分自身を含むすべての子オブジェクトのレイヤーを設定する拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExtensions { /// <summary> /// 自分自身を含むすべての子オブジェクトのレイヤーを設定します /// </summary> public static void SetLayerRecursively( this GameObject self, int layer ) { self.layer = la…

【Unity】レイヤー名を使用してレイヤーを設定する拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExtensions { /// <summary> /// レイヤー名を使用してレイヤーを設定します /// </summary> public static void SetLayer( this GameObject self, string layerName ) { self.layer = LayerMask.NameToLayer( l…

【Unity】孫オブジェクトを除くすべての子オブジェクトを取得する拡張メソッド

ソースコード using System.Collections.Generic; using UnityEngine; public static class GameObjectExtensions { /// <summary> /// 孫オブジェクトを除くすべての子オブジェクトを返します /// </summary> public static GameObject[] GetChildrenWithoutGrandchild( this G…

【Unity】Dictionary<TKey, TValue> を Hashtable に変換する拡張メソッド

ソースコード using System.Collections; using System.Collections.Generic; /// <summary> /// Dictionary 型の拡張メソッドを管理するクラス /// </summary> public static class DictionaryExtensions { /// <summary> /// 指定された Dictionary<TKey, TValue> を Hashtable に変換します /// </summary> /// <param name="self"></param>…

【Unity】Hashtable を Dictionary<string, string> に変換する拡張メソッド

ソースコード using System.Collections; using System.Collections.Generic; /// <summary> /// Hashtable 型の拡張メソッドを管理するクラス /// </summary> public static partial class HashtableExtensions { /// <summary> /// 指定された Hashtable を Dictionary<string, string> に変換します //</string,></summary>…

【Unity】HasFlag 関数を Unity でも使用できるようにする拡張メソッド

概要 [Flags] private enum JobType // ジョブの種類 { NONE = 1 << 0, // 無効 SOLDIER = 1 << 1, // 王国兵士 SORCERER = 1 << 2, // 魔法使い HUNTER = 1 << 3, // 狩人 MERCENARY = 1 << 4, // 傭兵 } private void Awake() { var jobs = JobType.SOLDIE…