コガネブログ

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

【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…

【Unity】指定したオブジェクトからルートとなるオブジェクトを取得する拡張メソッド

ソースコード using UnityEngine; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// ルートとなるオブジェクトを返します /// </summary> public static GameObject GetRoot(this GameObject self) { …

【Unity】ローカル座標を維持したまま親オブジェクトを設定する拡張メソッド

ソースコード using UnityEngine; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// ローカル座標を維持して親オブジェクトを設定します /// </summary> public static void SafeSetParent(this GameO…

【Unity】指定したゲームオブジェクトから名前で子オブジェクトを検索する拡張メソッド

はじめに 例えばこれらのオブジェクトが Hierarchy に存在する場合に UIRoot から Button という名前の子オブジェクトを検索する場合、 次のように処理を書きますが using UnityEngine; public class UIRoot : MonoBehaviour { private void Awake() { Trans…

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

概要 例えばこれらのオブジェクトが Hierarchy に存在する場合に UIRoot の子オブジェクトをすべて取得したい時があったので 指定したゲームオブジェクトやコンポーネントの子オブジェクトを すべて取得するための拡張メソッドを作成しました using System.L…

【Unity】【NGUI】UIWidgetやUISpriteの上下左右の端の位置を返す拡張メソッド

ソースコード using System.Linq; using UnityEngine; /// <summary> /// UIWidget 型の拡張メソッドを管理するクラス /// </summary> public static class UIWidgetExtensions { /// <summary> /// ローカル座標系における左端の位置を返します /// </summary> public static float GetLocalLeft(t…

【Unity】指定されたゲームオブジェクトがnullまたは非アクティブかどうかを判定する拡張メソッド

ソースコード using UnityEngine; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// 指定されたゲームオブジェクトが null または非アクティブであるかどうかを示します /// </summary> public static…

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

ソースコード using UnityEngine; using System.Linq; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// 指定されたコンポーネントがアタッチされているかどうかを返します /// </summary> public sta…

【Unity】RemoveComponentを拡張メソッドで実現する

ソースコード using UnityEngine; /// <summary> /// Component 型の拡張メソッドを管理するクラス /// </summary> public static class ComponentExtensions { /// <summary> /// コンポーネントを削除します /// </summary> public static void RemoveComponent<T>(this Component self) where T : C</t>…

【Unity】transform.LookAtをGameObject型のtransformプロパティを介さずに使用できるようにする拡張メソッド

ソースコード using UnityEngine; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// 向きを変更します /// </summary> public static void LookAt(this GameObject self, GameObject target) { self.t…

【Unity】マテリアルの透明度を設定しやすくする拡張メソッド

ソースコード using System; using UnityEngine; /// <summary> /// Material 型の拡張メソッドを管理するクラス /// </summary> public static class MaterialExtensions { /// <summary> /// 透明度を設定します /// </summary> public static void SetAlpha(this Material self, float a) { var …

【Unity】GetComponentsInChildrenで自分自身を含まないようにする拡張メソッド

ソースコード using System.Linq; using UnityEngine; public static class GameObjectExtensions { public static T[] GetComponentsInChildrenWithoutSelf<T>(this GameObject self) where T : Component { return self.GetComponentsInChildren<T>().Where(c =></t></t>…

【Unity】リスト内の要素をランダムに返す拡張メソッド

ソースコード /// <summary> /// IList 型の拡張メソッドを管理するクラス /// </summary> public static partial class IListExtensions { /// <summary> /// ランダムにリスト内の要素を返します /// </summary> /// <typeparam name="T">リスト要素の型</typeparam> /// <param name="self">リスト</param> /// <returns>リスト内の要素</returns> public static T GetRandom<T>(t…</t>

【Unity】配列内の要素をランダムに返す拡張メソッド

ソースコード /// <summary> /// 配列の拡張メソッドを管理するクラス /// </summary> public static class ArrayExtensions { /// <summary> /// ランダムに配列内の要素を返します /// </summary> /// <typeparam name="T">配列要素の型</typeparam> /// <param name="array">配列</param> /// <returns>配列内の要素</returns> public static T GetRandom<T>(this T[] self) { …</t>

【Unity】子のオブジェクトが存在するかどうかを確認する拡張メソッド

ソースコード /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static partial class GameObjectExtensions { public static bool HasChild(this GameObject gameObject) { return 0 < gameObject.transform.childCount; } } /// <summary> /// Tr</summary>…