コガネブログ

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

【C#】MyTrelloNet(Trello.NET) を使用して Trello から情報を取得してみる

はじめに 「Trello.NET」を使用すると C# で Trello の情報を取得したり Trello にボードやリスト、カードを作成したりできるようになります 上記の「Trello.NET」は 3 年ほど更新されていないようだったので 今回は下記の「MyTrelloNet」を使用していきます…

【Unity】【C#】簡易モンキーテストツールを作りました

はじめに Unity 製のスマホゲームの開発中に使用していた 自作のモンキーテストツールを GitHub に公開しました このツールを使うと指定された範囲内を高速かつランダムにクリックし続けるため ボタンが連打できたり意図しないタイミングで押せてしまったり…

【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(); }

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

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

ソースコード 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のExcept関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード 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のContains関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード 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のDistinct関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード 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#】StringBuilderでコレクション初期化子を使用できるようにする独自クラス

C#

ソースコード 使い方 // Before var builder = new StringBuilder(); builder.AppendLine( "1. フシギダネ" ); builder.AppendFormat( "2. {0}", "フシギソウ" ).AppendLine(); builder.AppendFormat( "3. {0}", "フシギバナ" ).AppendLine(); Console.Write…

【C#】コレクション初期化子が使用可能な並列でタスクを管理する独自クラス

C#

ソースコード 使い方 var task = new MultiTask { onEnded => { Debug.Log( "1" ); onEnded(); }, onEnded => { Debug.Log( "2" ); onEnded(); }, onEnded => { Debug.Log( "3" ); onEnded(); }, }; task.Play( () => Debug.Log( "完了" ) ); 関連記事

【C#】コレクション初期化子が使用可能な直列でタスクを管理する独自クラス

C#

ソースコード 使い方 var task = new SingleTask { onEnded => { Debug.Log( "1" ); onEnded(); }, onEnded => { Debug.Log( "2" ); onEnded(); }, onEnded => { Debug.Log( "3" ); onEnded(); }, }; task.Play( () => Debug.Log( "完了" ) ); 関連記事

【C#】独自のクラスでコレクション初期化子を使用できるようにする その2

C#

概要 using System; using System.Collections; using System.Collections.Generic; class MyList : IEnumerable { private List<int> mList = new List<int>(); public void Add( int item ) { mList.Add( item ); } public void Add( int item1, int item2 ) { mList</int></int>…

【C#】GroupBy でリストをグループ化する時に複数のキーを指定する

C#

// アイテムタイプ enum ITEM_TYPE { FREE_MONEY, // 無料通貨 PAY_MONEY , // 有料通貨 RECOVERY , // 回復アイテム EQUIPMENT , // 装備アイテム OTHER , // その他 } // アイテム情報 class ItemData { public int m_id ; // ID public ITEM_TYPE m_type …

【C#】並列でタスクを管理する独自クラス

C#

概要 var task = new MultiTask(); task.Add( onEnded => { Debug.Log( "1" ); onEnded(); } ); task.Add( onEnded => { Debug.Log( "2" ); onEnded(); } ); task.Add( onEnded => { Debug.Log( "3" ); onEnded(); } ); task.Play( () => { Debug.Log( "comp…

【C#】直列でタスクを管理する独自クラス

C#

概要 var task = new SingleTask(); task.Add( onEnded => { Debug.Log( "1" ); onEnded(); } ); task.Add( onEnded => { Debug.Log( "2" ); onEnded(); } ); task.Add( onEnded => { Debug.Log( "3" ); onEnded(); } ); task.Play( () => { Debug.Log( "com…

【C#】リストが変更された時にコールバック関数が呼び出される独自クラス

C#

概要 SelectableList<int> mSelectedList = new SelectableList<int>(); void Awake() { // リストが変更された時に呼び出されるコールバック関数を登録します mSelectedList.mChanged += () => Debug.Log( mSelectedList.Count ); // リストに要素を挿入します mSelec</int></int>…

【C#】値が変更された時にコールバック関数が呼び出される独自クラス

C#

概要 Selectable<int> mSelectedValue = new Selectable<int>(); void Awake() { // 値が変更された時に呼び出されるコールバック関数を登録します mSelectedValue.mChanged += value => Debug.Log( value ); // 値を変更します(コールバック関数が呼び出されます) m</int></int>…

【C#】配列やリストから重複している要素を抽出する拡張メソッド

ソースコード public static class IListExtensions { /// <summary> /// 重複している要素を抽出して返します /// </summary> public static T[] GetDistinct<T>( this IList<T> self ) { var uniqueList = new List<T>(); var result = new List<T>(); foreach ( var n in self ) { if ( u</t></t></t></t>…

【C#】サロゲート文字の場合 true を返す関数「char.IsSurrogate」

C#

概要 if ( char.IsSurrogate( ch ) ) { } UnityでNGUIを使用して入力欄を作成した時に 特定のAndroid端末で絵文字を入力されると アプリが強制終了する不具合に遭遇したため その不具合の回避するために調査している時に知りました

【おすすめスライド】「T4使ってみた」

T4使ってみた from Ryota Murohoshi

【おすすめスライド】「T4 Template 入門」

T4 Template 入門 from Hiroshi Maekawa

【C#】規定値を指定できるElementAtOrDefault拡張メソッド

ソースコード using System; using System.Collections.Generic; public static class IListExtensions { /// <summary> /// <para>シーケンス内の指定されたインデックス位置にある要素を返します。</para> /// <para>インデックスが範囲外の場合は既定値を返します。</para> /// </summary> public stati…

【C#】List<List<T>>型のインスタンスを平坦化する方法

C#

方法 using System.Collections.Generic; using System.Linq; ... var list = new List<List<int>>(); var result = list.SelectMany( c => c ).ToList();</list<int>

【C#】LitJSONで出力される文字列を整形する

C#

ソースコード using LitJson; using System.Text; public static class JsonUtils { public static string ToJson<T>( T obj ) { var builder = new StringBuilder(); var writer = new JsonWriter( builder ) { PrettyPrint = true }; JsonMapper.ToJson( obj,</t>…

【C#】InvalidCastException: Cannot cast from source type to destination type.

概要 InvalidCastException: Cannot cast from source type to destination type. object型の変数をキャストした時に遭遇 例えば下記のようにint型の値をobject型の変数に代入して 取り出す時に直接float型など別の型にキャストしようとすると発生 int x = 1…

【C#】指定されたファイルのサイズを返す関数

C#

ソースコード using System.IO; public static class FileInfoUtils { /// <summary> /// 現在のファイルのサイズをバイト単位で取得します /// </summary> public static long GetFileSize( string path ) { return new FileInfo( path ).Length; } }

【C#】指定された文字列を末尾から削除する拡張メソッド

ソースコード public static class StringExtensions { /// <summary> /// <para>指定された文字列がこのインスタンス内で最後に見つかった場合、</para> /// <para>その文字列を削除した新しい文字列を返します</para> /// </summary> public static string RemoveAtLast( this string self, string value…