読者です 読者をやめる 読者になる 読者になる

コガネブログ

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

【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> selector ) { m_se</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> selector ) { m_se</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> selector ) { m_se</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> selector ) { m_se</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> selector ) { m_se</t,></t,></t></t,>…

【Unity】「Easy Touch」でNGUIのオブジェクトを2本指で操作された時に、イベントを呼び出されないようにする方法

バージョン 5.0.11 対応方法 EasyTouch.csの934行目以降に下記の処理を追加する // NGUI if (enabledNGuiMode){ if (IsTouchOverNGui(fingers[twoFinger.finger0].position) && IsTouchOverNGui(fingers[twoFinger.finger1].position)) { twoFinger.isOverGu…

【Unity】UniRxを使用して条件を満たしたらActionデリゲートを呼び出す汎用関数を実装する

val isCompleted = false; CoroutineUtils.CallWaitForCondition( () => isCompleted, () => Debug.Log( "ピカチュウ" ) ); CoroutineUtils.CallWaitForCondition( gameObject, () => isCompleted, () => Debug.Log( "ピカチュウ" ) );

【Unity】UniRxを使用して指定された秒数待機してからActionデリゲートを呼び出す汎用関数を実装する

CoroutineUtils.CallWaitForSeconds( 1.5f, () => Debug.Log( "ピカチュウ" ) ); CoroutineUtils.CallWaitForSeconds( gameObject, 1.5f, () => Debug.Log( "ピカチュウ" ) );

【Unity】UniRxを使用して1フレーム待機してからActionデリゲートを呼び出す汎用関数を実装する

CoroutineUtils.CallWaitForEndOfFrame( () => Debug.Log( "ピカチュウ" ) ); CoroutineUtils.CallWaitForEndOfFrame( gameObject, () => Debug.Log( "ピカチュウ" ) );

【Unity】AndroidやiOSのシェアを確認できるサイト

Unity - Mobile Hardware Stats

【C#】partialクラスにinterfaceを実装する場合

partialクラスのいずれかの定義にのみインターフェイスの実装を書けば良い public interface ICharacter { int Id { get; } } public partial class Character { } public partial class Character : ICharacter { public int Id { get { return 25; } } } v…

【Unity】ボックス化をなるべく回避してGCの発生回数を減らすstring.Format

// string.Format を使用した場合のGC発生回数検証 for ( int i = 0; i < 1000000; i++ ) { string.Format( "{0},{1},{2},{3}", 0, 1, 2, 3 ); } Console.WriteLine( GC.CollectionCount( 0 ) ); // StringUtils.Format を使用した場合のGC発生回数検証 for …

【Unity】「Error building Player: IOException: Failed to Copy File / Directory from 'Temp/StagingArea/Data' to 'Temp/StagingArea/Trampoline/Data'.」

Error building Player: IOException: Failed to Copy File / Directory from 'Temp/StagingArea/Data' to 'Temp/StagingArea/Trampoline/Data'. JenkinsでUnityのビルド実行時に発生したエラー Jenkins用のMacの容量が不足していたことが原因

【Unity】NGUI「EVENT SYSTEM」翻訳

Colliderがアタッチされているすべてのゲームオブジェクトは イベントを受け取ることが可能 using UnityEngine; public class Example : MonoBehaviour { private void OnHover( bool isOver ) { Debug.Log( "OnHover" ); } private void OnPress( bool isPr…

【Unity】NGUI「CONTEXT MENUS」翻訳

便利なメニュー ショートカットキーで実行 ショートカットキー 内容 Alt+Shift+N 選択中のオブジェクトの子に空のオブジェクトを作成 Alt+Shift+C 選択中のオブジェクトにBoxColliderをアタッチ Alt+Shift+P 選択中のオブジェクトのサイズをスナップ Unityの…

【Unity】NGUI「THE BASICS」翻訳

UIの作り方 1. プレハブをProjectビューからSceneビューにドラッグする 2. Unityのメニューから作成する 3. ショートカットキーを使用する ショートカットキー 内容 Alt+Shift+S UISprite作成 Alt+Shift+L UILabel作成 Alt+Shift+T UITexture作成 Alt+Shift+…

Unity5.4で気になった改善点と変更点メモ

AndroidでIL2CPPが正式サポート iOS6がサポート対象外に スプラッシュスクリーンに細かい設定が追加された GameObject.AddComponent<MonoBehaviour>が例外を吐くようになった 実機でログ出力するかどうかをPlaterSettingsで設定できるようになった アニメーションで同じイベ</monobehaviour>…

【おすすめAsset Store Publisher】「SURIYUN」

http://www.suriyun.com/ Anime Character SD Character Refined Airplane Control Low-Poly Pack Knight & Orc

【おすすめAsset Store Publisher】「Wizcorp」

Anime Character

【おすすめAsset Store Publisher】「BITGEM」

3Dモデル/建物 3Dモデル/キャラクター テクスチャ

【おすすめAsset Store Publisher】「Flipbook Games」

http://flipbookgames.com/

【おすすめスライド】「ポコロンダンジョンズとリアルタイム通信 -サーバサイド編-」

ポコロンダンジョンズとリアルタイム通信 -サーバサイド編- from Suguru Shirai

【おすすめスライド】「ポコロンダンジョンズとリアルタイム通信 -クライアント編-」

ポコロンダンジョンズとリアルタイム通信 -クライアント編- from Suguru Shirai

【Unity】サンプルや完成プロジェクト、ツールがダウンロードできるページ

https://unity3d.com/jp/learn/resources/downloads

【Visual Studio】括弧に色を付ける拡張機能「Viasfora」

「Viasfora」をVisual Studioに追加することで 括弧に色を付けることができます 適用前 適用後

【Unity】ゲームオブジェクトにコメントを付与することができるアセット「GameObject Comments」

概要 「GameObject Comments」を使用すると ゲームオブジェクトにコメントを付与することができます

【おすすめスライド】「技術的負債だらけのチームで技術マネージメントしてみた」

Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた from Yasukazu Nagatomi

【おすすめスライド】「私はこうやってSlackを社内で流行らせました」

私はこうやってSlackを社内で流行らせました from DATAHOTEL

【Unity】Slack APIを使用してSlackにスクリーンショットをアップロードするクラス

使用例 var filename = DateTime.Now.ToString( "yyyy-MM-dd_hhmmss" ) + ".png"; var data = new UploadData { token = "【Slack API Token】", filename = filename, title = "タイトル", initial_comment = "コメント", channels = "#general", }; var ro…

【Unity】Slack APIを使用してSlackにメッセージを送信するクラス

使用例 1 var data = new PostMessageData { token = "【Slack API Token】", channel = "#general", text = "ここにテキストを入力します", }; var routine = SlackAPI.PostMessage( data ); StartCoroutine( routine ); 使用例 2 var data = new PostMessa…

【Unity】Incoming WebHooksを使用してSlackにメッセージを送信するクラス

このクラスはUnity5.3以上で使用することができます 使用例 1 var url = "【Webhook URL】"; var payload = new Payload { text = "ここにテキストを入力します", }; var routine = IncomingWebhooks.SendMessage( url, payload ); StartCoroutine( routine …

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

Before var form = new WWWForm(); form.AddField( "frameCount", Time.frameCount.ToString() ); form.AddBinaryData( "fileUpload", bytes, "screenShot.png", "image/png" ); After var form = new WWWFormCollection { { "frameCount", Time.frameCount.…

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

C#

// Before var builder = new StringBuilder(); builder.AppendLine( "1. フシギダネ" ); builder.AppendFormat( "2. {0}", "フシギソウ" ).AppendLine(); builder.AppendFormat( "3. {0}", "フシギバナ" ).AppendLine(); Console.WriteLine( builder ); // …

【Visual Studio】Visual Studio拡張機能の記事34選+スライド

コーディング系 JSONからクラスを生成できるようにする「Microsoft ASP.NET and Web Tools」 キャレットの移動が滑らかになる「Smooth Caret」 指定した文字位置でコードを揃える「Code alignment」 コードを複製する「Duplicate Selection」 コメントを一括…

【Unity】エディタ拡張の記事46選+スライド

Hierarchy ビュー HierarchyにNGUIのUIWidgetのdepthを編集するGUIを表示する Hierarchyを一行おきに色を変えて見やすくする Hierarchyにゲームオブジェクトが持つコンポーネントの一覧を表示する Hierarchyにゲームオブジェクトのアイコンを表示する 無効な…

【Unity】UnityでC#5.0と6.0の機能を使用できるようにする

https://bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration 上記のBitbucketで公開されている「Unity C# 5.0 and 6.0 Integration」を Unityプロジェクトに追加することで、 UnityでC#5.0と6.0の機能が使用できるようになります 導入手順 下記のペー…

【Visual Studio】JSONからクラスを生成できるようにするツール「Microsoft ASP.NET and Web Tools」

「Microsoft ASP.NET and Web Tools」をインストールすることで JSONからクラスを生成できるようになります 使用方法 JSONをコピーする メニューの「編集>形式を選択して貼り付け>JSONをクラスとして貼り付ける」を選択する 例 次のようなJSONをコピーして上…

【Visual Studio】ブックマーク機能を追加する拡張機能「Favorite Documents」

「Favorite Documents」をVisual Studioに追加することで ブックマーク機能を追加することができます 使用方法 「表示>その他のウィンドウ>Favorite Documents」を選択することで ブックマークの一覧を表示できます 「FAVORITES>Add to favorites」を選択す…

【Visual Studio】キャレットの移動が滑らかになる拡張機能「Smooth Caret」

「Smooth Caret」をVisual Studioに追加することで キャレットの移動を滑らかにすることができます

【Visual Studio】再起動の項目を追加する拡張機能「Visual Studio Restart 2015」

「Visual Studio Restart 2015」をVisual Studioに追加することで 再起動の項目を追加することができます 適用前 適用後

【Visual Studio】プログラムの作業ログを記録する拡張機能「WakaTime」

「WakaTime」をVisual Studioに追加することで プログラムの作業ログを記録することができます 導入方法や使用方法は上記の公式ページで すべて記載されていますがこちらでも紹介しておきます 導入方法 1. 「https://wakatime.com」にアクセスして「SIGN UP…

【Unity】並列でタスクを管理するシリアライズ可能な独自クラス

関連記事

【Unity】直列でタスクを管理するシリアライズ可能な独自クラス

関連記事

【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.Add(</int></int>…

【Visual Studio】指定した文字位置でコードを揃える拡張機能「Code alignment」

「Code alignment」をVisual Studioに追加することで 指定した文字位置でコードを揃えることができるようになります 使用方法 「Code alignment」をインストールすると ツールバーにボタンが追加されます それぞれのボタンを押すと次のようなルールで コード…

【Visual Studio】ログ出力に色を付ける拡張機能「Output enhancer」

「Output enhancer」をVisual Studioを追加することで ログ出力に色を付けることができます 適用前 適用後

【Visual Studio】東北ずん子を表示する拡張機能「東北ずん子IDE」

「東北ずん子IDE」をVisual Studioに追加することで 東北ずん子を表示することができます

【Visual Studio】タブの機能を拡張するツール「Tabs Studio - document tabs manager for Visual Studio IDE.」

「Tabs Studio - document tabs manager for Visual Studio IDE.」を Visual Studioに追加することで タブの機能を拡張することができます 適用前 適用後