コガネブログ

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

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

【Unity】【uGUI】Image のスプライトを変更した時にサイズを合わせる拡張メソッド

はじめに var image = GetComponent<Image>(); image.sprite = sprite; image.SetNativeSize(); スクリプトから Image のスプライトを変更する時に 一緒に SetNativeSize 関数を呼び出すことが多かったので これらをまとめた拡張メソッドを作成しました ソースコー</image>…

【Unity】【uGUI】Text の文字列の設定を楽にする拡張メソッド

はじめに var text = GetComponent<Text>(); int score = 25; float time = 0.5f: text.text = score.ToString(); text.text = time .ToString(); スコアやタイムなどの数値を Text で表示する場合、 ToString 関数を呼び出して text に設定する必要があり コーデ</text>…

【C#】シーケンスを指定された要素数で分割する拡張メソッド

ソースコード using System.Collections.Generic; using System.Linq; public static class IEnumerableExt { public static IEnumerable<IEnumerable<T>> Chunks<T> ( this IEnumerable<T> self, int size ) { while ( self.Any() ) { yield return self.Take( size ); self = se</t></t></ienumerable<t>…

【C#】List のサイズを設定できる拡張メソッド

ソースコード using System; using System.Collections.Generic; /// <summary> /// List 型の拡張メソッドを管理するクラス /// </summary> public static class ListExtensions { /// <summary> /// サイズを設定します /// </summary> public static void SetSize<T>( this List<T> self, int size ) {</t></t>…

【Unity】Input.GetKey や Input.GetKeyDown の記述を簡略化する拡張メソッド

ソースコード using UnityEngine; public static class KeyCodeExt { public static bool IsPressing( this KeyCode self ) { return Input.GetKey( self ); } public static bool IsPressed( this KeyCode self ) { return Input.GetKeyDown( self ); } } …

【C#】C# で使用できる拡張メソッドが豊富にまとめられている「EXTENSIONMETHOD.NET」紹介

概要 http://www.extensionmethod.net/ 上記の「EXTENSIONMETHOD.NET」では C# で使用できる拡張メソッドが豊富にまとめられています

【C#】XmlNodeList で LINQ の「Select」「Where」「First」「FirstOrDefault」を使用できるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Xml; public static class XmlExt { public static IEnumerable<T> Select<T> ( this XmlNodeList self, Func<XmlNode, T> selector ) { foreach ( XmlNode n in self ) { yield return selector( </xmlnode,></t></t>…

【C#】DateTime が特定の曜日の場合に true を返す拡張メソッド

ソースコード public static class DateTimeExt { public static bool IsMonday( this DateTime self ) { return date.DayOfWeek == DayOfWeek.Monday; } public static bool IsTuesday( this DateTime self ) { return date.DayOfWeek == DayOfWeek.Tuesday…

【C#】明日の DateTime を返す拡張メソッド

ソースコード public static class DateTimeExt { public static DateTime Tomorrow( this DateTime self ) { return value.AddDays( 1 ); } }

【C#】前日の DateTime を返す拡張メソッド

ソースコード public static class DateTimeExt { public static DateTime Yesterday( this DateTime self ) { return value.AddDays( -1 ); } }

【C#】DateTime が指定された期間内の場合に true を返す拡張メソッド

ソースコード public static class DateTimeExt { public static bool IsBetween( this DateTime self, DateTime from, DateTime to ) { return from <= value && to >= value; } }

【C#】XmlAttribute が null ではない場合にのみ Value を返す拡張メソッド

ソースコード using System.Xml; public static class XmlExt { public static string GetValueOrDefault ( this XmlAttribute self, string defaultValue = "" ) { return self != null ? self.Value : defaultValue; } } 使い方 var attr = node.Attribute…

【C#】シーケンスから null の要素を除外する拡張メソッド

ソースコード using System.Collections.Generic; using System.Linq; public static class IEnumerableExt { public static IEnumerable<T> NotNull<T>( this IEnumerable<T> self ) { return self.Where( c => c != null ); } } 使い方 var list = new [] { "フシギ</t></t></t>…

【C#】配列やリストで要素が末尾かどうかを判定できるループ構文の拡張メソッド

ソースコード using System; using System.Collections.Generic; public static class ListExt { public struct ForEachData<T> { private readonly int m_index ; private readonly T m_value ; private readonly bool m_isLast ; public int Index { get { re</t>…

【Unity】【uGUI】RectTransform の幅と高さの取得/設定を楽にする拡張メソッド

はじめに var t = self.GetComponent<RectTransform>(); // 取得 var width = t.sizeDelta.x; var height = t.sizeDelta.y; // 設定 var sizeDelta = t.sizeDelta; sizeDelta = new Vector2( 128, 64 ); t.sizeDelta = sizeDelta; RectTransform の幅と高さと取得、設定する</recttransform>…

【Unity】【uGUI】SpriteAtlas に含まれているすべての Sprite を返す拡張メソッド

はじめに var sprites = new Sprite[ spriteAtlas.spriteCount ]; spriteAtlas.GetSprites( sprites ); SpriteAtlas に含まれているすべての Sprite を取得する場合、 上記のような処理を記述すれば実現できますが 毎回配列を定義するのが大変だったので す…

【C#】char 型の数値を int 型に変換する拡張メソッド

ソースコード public static class CharExt { public static int ToInt( this char self ) { return self - '0'; } } 使い方 char ch = '1' int num = ch.ToInt();

【C#】数値を符号付きの文字列に変換する拡張メソッド

ソースコード /// <summary> /// 指定された数値を符号付きの文字列に変換して返します /// </summary> public static string WithSign( this int self ) { return self != 0 ? self.ToString( "+#;-#;" ) : self.ToString(); }

【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】【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】指定されたオブジェクトがプレハブではない場合 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…

【C#】単数を渡せるIEnumerable.Concat

ソースコード /// <summary> /// 2 つのシーケンスを連結します /// </summary> public static IEnumerable<TSource> Concat<TSource>( this IEnumerable<TSource> first, TSource second ) { return first.Concat( new [] { second } ); }</tsource></tsource></tsource>

【C#】LINQのUnion関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExtensions { private sealed class CommonSelector<T, TKey> : IEqualityComparer<T> { private Func<T, TKey> m_selector; public CommonSelector( Func<T, TKey> sele</t,></t,></t></t,>…

【C#】LINQのSequenceEqual関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExtensions { private sealed class CommonSelector<T, TKey> : IEqualityComparer<T> { private Func<T, TKey> m_selector; public CommonSelector( Func<T, TKey> sele</t,></t,></t></t,>…