コガネブログ

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

2014-07-01から1ヶ月間の記事一覧

【Unity】EditorApplication.ExecuteMenuItem で Unity エディタのメニューのショートカットを作成する

Unity エディタではメニューから InputManager を開いて入力情報を設定したり Tags & Layers を開いてタグやレイヤーを設定したり PhysicsManager を開いて当たり判定を設定したりできますが このあたりのメニューは普段から頻繁に使うわけではないので 久し…

【Unity】Inspector に指定された関数を実行するボタンを表示する PropertyDrawer

Unity の Inspector ビューにボタンを表示して 指定された関数を実行できるようにする PropertyDrawer を作成しました 上記の ButtonAttribute.cs を Unity プロジェクトに追加して 下記のようなスクリプトを書くことで Inspector に指定された関数を実行す…

【Unity】すべての子オブジェクトを取得する拡張メソッド

概要 例えばこれらのオブジェクトが Hierarchy に存在する場合に UIRoot の子オブジェクトをすべて取得したい時があったので 指定したゲームオブジェクトやコンポーネントの子オブジェクトを すべて取得するための拡張メソッドを作成しました using System.L…

【Unity】Unity 4.5 の気になる新機能まとめ

Unity 4.5 で使える気づきにくい機能を紹介したブログ記事 - 強火で進め Unity 4.5 が公開されてから 2 ヶ月ほど経ちましたが 調べてみたら意外と知らない機能が追加されていることがわかったので 気になった新機能をまとめてみました Hierarchy ビューのオ…

【おすすめスライド】「(Unityよくわかってない人のための)なんとなくわかるかもしれないAssetBundle」

関連記事

【Unity】#defineで定義されているシンボルを一覧で表示するウィンドウをエディタ拡張で実装する

概要 using System; using UnityEditor; using UnityEngine; /// <summary> /// #define で定義されているシンボルを一覧で表示するウィンドウを管理するクラス /// </summary> public sealed class SymbolListWindow : EditorWindow { private Vector2 mScrollPos; // スクロー…

【Unity】【NGUI】UIWidgetやUISpriteの上下左右の端の位置を返す拡張メソッド

ソースコード using System.Linq; using UnityEngine; /// <summary> /// UIWidget 型の拡張メソッドを管理するクラス /// </summary> public static class UIWidgetExtensions { /// <summary> /// ローカル座標系における左端の位置を返します /// </summary> public static float GetLocalLeft(t…

【C#】1つのオブジェクトが複数のオブジェクトのいずれかと等しいか判定する拡張メソッド

概要 【C#】1つの文字列が複数の文字列のいずれかと等しいか判定する拡張メソッド - コガネブログ 以前、指定した1つの文字列が複数の文字列のいずれかと等しいかどうかを判定する 拡張メソッドを公開しましたが、文字列以外の型でも使えるジェネリック版を…

【C#】Dictionaryに既に指定したキーが存在する場合は何もしないAdd関数の拡張メソッド

ソースコード using System.Collections.Generic; /// <summary> /// Dictionary 型の拡張メソッドを管理するクラス /// </summary> public static class DictionaryExtensions { /// <summary> /// <para>指定したキーと値をディクショナリに追加します</para> /// <para>指定したキーが既に格納されている</para></summary>…

【C#】配列やリストを逆順に処理する拡張メソッド

はじめに var array = new []{ 1, 2, 3, 4, 5 }; for ( int i = array.Length - 1; 0 <= i; i-- ) { Debug.Log( array[ i ] ); // 5 // 4 // 3 // 2 // 1 } 配列やリストを末尾から処理したい場合、上記のようなループ構文を書きますが for ( int i = array.…

【おすすめスライド】「Unityを使用したスマートフォン開発事例 ~ギルティドラゴンのアートワーク~」

関連記事

【おすすめスライド】「ゲーム開発プロセスカイゼン」

関連記事

【Unity】指定されたゲームオブジェクトがnullまたは非アクティブかどうかを判定する拡張メソッド

ソースコード using UnityEngine; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// 指定されたゲームオブジェクトが null または非アクティブであるかどうかを示します /// </summary> public static…

【Unity】指定されたコンポーネントがアタッチされているかどうかを返す拡張メソッド

ソースコード using UnityEngine; using System.Linq; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// 指定されたコンポーネントがアタッチされているかどうかを返します /// </summary> public sta…

【Unity】配列やリストなどのコレクションの検索速度の検証結果

はじめに // 配列から Enumerable.First 関数で検索 result = array.First( c => c.Id == id ); // 配列から Array.Find 関数で検索 result = Array.Find( array, c => c.Id == id ); // List 型から Enumerable.First 関数で検索 result = list.First( c =>…

【Unity】ループ構文の処理速度の検証結果

はじめに // for 文 for (int i = 0; i < array.Length; i++) { Debug.Log(array[i]); } // for 文(ループ回数を変数にキャッシュ) int max = array.Length; for (int i = 0; i < max; i++) { Debug.Log(array[i]); } // foreach 文 foreach (var n in arr…

【Unity】GameObject.Find 系関数の処理速度の検証結果

検証結果 ※結果は Unity エディタ上で 10 回テストしたものの平均値、単位は秒 ※Unityのバージョンは4.3.4 オブジェクト 検索方法 1,000 回 10,000 回 100,000 回 100 Find 0.004392 秒 0.027789 秒 0.252738 秒 100 FindGameObjectWithTag 0.000693 秒 0.00…

【Unity】Error building Player: Win32Exception: ApplicationName='【Android SDKのパス】\tools\zipalign.exe'

Error building Player: Win32Exception: ApplicationName='【Android SDKのパス】\tools\zipalign.exe', CommandLine='4 "【Unityプロジェクトのパス】\Temp/StagingArea/Package_unaligned.apk" "【Unityプロジェクトのパス】\Temp/StagingArea/Package.ap…

【おすすめスライド】「ノベルゲーム動的演出の考え方」

関連記事

【Unity】Application.RegisterLogCallbackに複数のコールバックを登録できるようにするクラス

using UnityEngine; private void Awake() { Application.RegisterLogCallback(HandleLog); } private void HandleLog(string condition, string stackTrace, LogType type) { } Application.RegisterLogCallbackを使用すると Debug.Logで出力されたログの情…

【C#】 数値を加算して、範囲を超えた分は 0 からの値として処理して返す拡張メソッド

ソースコード /// <summary> /// int 型の拡張メソッドを管理するクラス /// </summary> public static class IntExtensions { /// <summary> /// 数値を加算して、範囲を超えた分は 0 からの値として処理して返します /// </summary> public static int Repeat(this int self, int value, int max)…

【C#】指定した型の基底クラスの情報をすべて取得する拡張メソッド

ソースコード using System; using System.Collections.Generic; /// <summary> /// Type 型の拡張メソッドを管理するクラス /// </summary> public static class TypeExtensions { /// <summary> /// 指定された Type の継承元であるすべての型を取得します /// </summary> public static IEnumera…

【C#】リストの先頭にあるオブジェクトを削除して返す拡張メソッド

ソースコード using System; using System.Collections.Generic; /// <summary> /// IList 型の拡張メソッドを管理するクラス /// </summary> public static class IListExtensions { /// <summary> /// 先頭にあるオブジェクトを削除し、返します /// </summary> public static T Dequeue<T>(this ILi</t>…