コガネブログ

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

【Unity】プレハブもしくはプレハブのインスタンスの場合 false を返す拡張メソッド

ソースコード using UnityEditor; public static class UnityObjectExt { public static bool IsNotPrefab( this UnityEngine.Object self ) { var type = PrefabUtility.GetPrefabAssetType( self ); return type == PrefabAssetType.NotAPrefab; } } 使用…

【Unity】プレハブもしくはプレハブのインスタンスの場合 true を返す拡張メソッド

ソースコード using UnityEditor; public static class UnityObjectExt { public static bool IsPrefab( this UnityEngine.Object self ) { var type = PrefabUtility.GetPrefabAssetType( self ); return type != PrefabAssetType.NotAPrefab; } } 使用例 D…

【Unity】static な event の登録数を取得する方法

概要 using System; using System.Reflection; public static class DelegateExt { public static int GetLength<T>( string name ) { return GetLength( typeof( T ), name ); } public static int GetLength( this Type self, string name ) { var attrs = Bi</t>…

【Unity】ゲームオブジェクトのルートパスを取得できる拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExt { private static string GetRootPath( this GameObject gameObject ) { var path = gameObject.name; var parent = gameObject.transform.parent; while ( parent != null ) { path = p…

【Unity】Animator Controller のいずれかのステートの Motion が null になっている場合に true を返す拡張メソッド

概要 using System.Linq; using UnityEditor.Animations; public static class AnimatorControllerExt { public static bool HasNullMotion( this AnimatorController self ) { foreach ( var n in self.layers ) { if ( n.stateMachine.states.Any( c => c.…

【Unity】uGUI の Toggle の isOn をスクリプトから設定する時に onValueChanged を発生しない拡張メソッド

ソースコード using UnityEngine.UI; public static class ToggleExt { public static void SetIsOnWithoutCallback( this Toggle self, bool isOn ) { var onValueChanged = self.onValueChanged; self.onValueChanged = new Toggle.ToggleEvent(); self.is…

【Unity】便利な関数や拡張メソッドを使用できる「unity-utils」紹介

はじめに 「unity-utils」を Unity プロジェクトに導入することで 便利な関数や拡張メソッドを使用できるようになります 使用例 RandomUtil using Assets.Scripts.Utils; using System.Collections.Generic; using UnityEngine; public class Example : Mono…

【Unity】ベクトルと角度を変換できる拡張メソッド

ソースコード 使用例 var dir = Vector2.right; var rot = dir.VectorToDeg(); var angle = 123f; var vec = angle.DegToVector(); 参考ツイート whip those unity types into shape and add your own functionality via extension methods. for instance: c…

【Unity】RectTransform の anchoredPosition を設定する拡張メソッド

ソースコード using UnityEngine; public static class RectTransformExt { public static void SetAnchoredPositionX ( this RectTransform self, float x ) { var pos = self.anchoredPosition; pos.x = x; self.anchoredPosition = pos; } public static …

【Unity】UnityEvent で RemoveAllListeners してから AddListener する拡張メソッド

ソースコード using System; using UnityEngine.Events; public static class UnityEventExt { public static void SetListener( this UnityEvent self, Action call ) { self.RemoveAllListeners(); self.AddListener( () => call() ); } public static voi…

【Unity】UnityEvent の AddListener で System.Action を渡せるようにする拡張メソッド

ソースコード using System; using UnityEngine.Events; public static class UnityEventExt { public static void AddListener( this UnityEvent self, Action call ) { self.AddListener( () => call() ); } } 使用例 Action call = () => {}; button.onCl…

【Unity】DOTween で async / await を使用する

ソースコード 使用例 using DG.Tweening; using UnityEngine; public class Example : MonoBehaviour { private async void Start() { var t = transform; await t.DOMove( Random.onUnitSphere, 1 ); // 移動 await t.DORotate( Random.rotation.eulerAngle…

【Unity】便利な拡張メソッドが使用できる「UrFairy」紹介

はじめに 「UrFairy」を Unity プロジェクトに導入することで 便利な拡張メソッドが使用できるようになります 使い方 using UrFairy; ソースコードの先頭に上記の using を追加することで使用できるようになります 拡張メソッド一覧(引用) Vector3 transfo…

【Unity】便利な拡張メソッドをまとめた簡易ライブラリ「KoganeUnityLib」を GitHub に公開しました

はじめに 便利な拡張メソッドをまとめた簡易ライブラリ 「KoganeUnityLib」を GitHub に公開しました 目次 はじめに 目次 開発環境 導入方法 拡張メソッド ActionExt ArrayExt BoolExt ByteExt ColorExt ComponentExt DateTimeExt DictionaryExt EnumExt Flo…

【Unity】ButtonClickedEvent のリスナーの追加、削除、設定の記述を簡略化する拡張メソッド

ソースコード 関連記事

【Unity】uGUI の RawImage の UV の設定を楽にする拡張メソッド

ソースコード 関連記事

【Unity】uGUI の Graphic から ContentSizeFitter を参照する手間を省く拡張メソッド

ソースコード 関連記事

【Unity】uGUI の Graphic から RectTransform を参照する手間を省く拡張メソッド

ソースコード 関連記事

【Unity】Vector2 を四捨五入する拡張メソッド

ソースコード using UnityEngine; public static class Vector2Ext { public static Vector2 Round( this Vector2 self ) { return new Vector2 ( Mathf.Round( self.x ), Mathf.Round( self.y ) ); } } 使い方 var vec = new Vector2( 1.1f, 1.1f ); vec = …

【Unity】Vector3 を四捨五入する拡張メソッド

ソースコード using UnityEngine; public static class Vector3Ext { public static Vector3 Round( this Vector3 self ) { return new Vector3 ( Mathf.Round( self.x ), Mathf.Round( self.y ), Mathf.Round( self.z ) ); } } 使い方 var vec = new Vector…

【Unity】SpriteRenderer の透明度を設定できる拡張メソッド

ソースコード using UnityEngine; public static class SpriteRendererExt { public static void SetAlpha( this SpriteRenderer self, float alpha ) { var color = self.color; color.a = alpha; self.color = color; } } 使用例 var renderer = GetCompon…

【Unity】uGUI の Image や Text の透明度を設定できる拡張メソッド

ソースコード using UnityEngine.UI; public static class GraphicExt { public static void SetAlpha( this Graphic self, float alpha ) { var color = self.color; color.a = alpha; self.color = color; } } 使用例 var image = GetComponent<Image>(); image.S</image>…

【Unity】カメラの cullingMask を設定できる拡張メソッド「CameraExtensions.cs」紹介

ソースコード 使用例 // 指定したレイヤーを表示 camera.LayerCullingShow( "UI" ); // 指定したレイヤーを非表示 camera.LayerCullingHide( "UI" ); // 指定したレイヤーの表示/非表示を反転 camera.LayerCullingToggle( "UI" ); // 指定したレイヤーを表示…

【Unity】GetComponentsInChildren で引数の型情報を文字列で渡せるようにする拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExt { public static Component[] GetComponentsInChildren( this GameObject self, string type, bool includeInactive ) { return self .GetComponentsInChildren<Transform>( includeInactive ) .Sel</transform>…

【Unity】GetComponentInChildren で引数の型情報を文字列で渡せるようにする拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExt { public static Component GetComponentInChildren( this GameObject self, string type, bool includeInactive ) { var com = self.GetComponent( type ); if ( com != null ) return …

【Unity】List からランダムに値を取得して、その値を List から削除する拡張メソッド

ソースコード using System.Collections.Generic; using UnityEngine; public static class ListExt { public static T PopRandomElement<T>( this List<T> self ) { var item = self[ Random.Range( 0, self.Count ) ]; self.Remove( item ); return item; } } 使</t></t>…

【Unity】マテリアルの拡張メソッド「ShaderRenderState.cs」紹介

ソースコード 使用例 var mat = GetComponent<MeshRenderer>().material; mat.SetCull( ShaderRenderState.Cull.Back ); mat.SetZWrite( ShaderRenderState.ZWrite.Off ); mat.SetZTest( ShaderRenderState.ZTest.Greater ); 参考ツイート #unitytipsCustomize shaders ren</meshrenderer>…

【Unity】便利な拡張機能のセット「Unity Extensions」紹介

はじめに 「Unity Extensions」は便利な拡張機能のセットです 使用準備 using Extensions; 拡張メソッドを使用するスクリプトに上記の using を追加します 拡張メソッド一覧 Component // コンポーネントをアタッチ someComponent.AddComponent<MyComponent>(); // コンポ</mycomponent>…

【Unity】【uGUI】RectTransform のピボットの設定を楽にする拡張メソッド

はじめに var t = self.GetComponent<RectTransform>(); var pivot= t.pivot; pivot= new Vector2( 0, 1 ); t.pivot= pivot; RectTransform のピボットを設定する記述が少し冗長に感じたので わかりやすくするための拡張メソッドを作成しました ソースコード using UnityEng</recttransform>…

【Unity】【uGUI】RawImage のテクスチャを変更した時にサイズも更新する拡張メソッド

はじめに var rawImage = GetComponent<RawImage>(); rawImage.texture = texture; rawImage.SetNativeSize(); スクリプトから RawImage のテクスチャを変更する時に 一緒に SetNativeSize 関数を呼び出すことが多かったので これらをまとめた拡張メソッドを作成しまし</rawimage>…