コガネブログ

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

【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 readonly Func<T, TKey> m_selector; public CommonSelector( </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 のシェアを確認できるサイト

概要 http://hwstats.unity3d.com/mobile/ 上記のページで Android や iOS のシェアを確認できます

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

C#

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

【Unity】ボックス化をなるべく回避して GC の発生を抑える string.Format「StringUtils」

ソースコード 検証用スクリプト // 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 を使…

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