コガネブログ

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

2014-01-01から1年間の記事一覧

【Unity】GameObjectが削除されてnullになったかどうかはnull合体演算子では確認できない

概要 MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. すでに削除されたゲームオブジェク…

【Unity】モデルのアニメーションの種類による負荷の差の検証結果

http://hideapp.cocolog-nifty.com/blog/2012/12/unity-tipsunity.html 上記のサイトを見て、モデルのアニメーションの種類を設定するときに LegacyとGenericでどちらの方が負荷が軽いのか気になったので調べてみました 検証結果 ※30FPSを上限に設定して、1…

【おすすめスライド】「ゆるロボ製作所開発事例 – ドローコール削減」

関連記事

【Unity】Scene ビューでオブジェクトの手前にアイコンを表示する

Hierarchy ビューでオブジェクトを選択してから Inspector ビューの左上の箱の画像をタップすると 「Select Icon」という小ウィンドウが表示されます ここでいずれかのアイコンを選択するか、 「Other...」ボタンを押してテクスチャを選択すると Scene ビュ…

【おすすめスライド】「デキるプログラマだけが知っているコードレビュー7つの秘訣」

関連記事

【Unity】【アセット】「Quick Disable」でオブジェクトのアクティブを素早く切り替える

Quick Disable Quick Disable は Hierarchy ビューに オブジェクトのアクティブを切り替えるボタンを表示するアセットです Quick Disable をインポートした後に Hierarchy ビューで Ctrl + Shift キーを押し続けると 選択したオブジェクトのアクティブを切り…

【Unity】MonoBehaviour を継承して処理を改善する

「宴」実装時に得られたUnityプログラムノウハウ from Ryohei Tokimura MonoBehaviour を継承したクラスで transform や rigidbody を使用するときの注意として transform や rigidbody は内部で毎回 GetComponent しているようです そうなると、これらのプ…

【Unity】HasFlag 関数を Unity でも使用できるようにする拡張メソッド

概要 [Flags] private enum JobType // ジョブの種類 { NONE = 1 << 0, // 無効 SOLDIER = 1 << 1, // 王国兵士 SORCERER = 1 << 2, // 魔法使い HUNTER = 1 << 3, // 狩人 MERCENARY = 1 << 4, // 傭兵 } private void Awake() { var jobs = JobType.SOLDIE…

【おすすめスライド】「知識Δからオンラインゲームを開発したお話」

関連記事

【Unity】多機能コンソール「Editor Console Pro」でゲーム開発効率化

はじめに 「Unity アセット真夏のアドベントカレンダー 2014 Summer!」の 8/8 分を担当させていただく baba_s です。よろしくお願いします! 昨日は椿さまによる「ゲームパットを複数挿してプレイしよう」でした 本日は「Editor Console Pro」というアセッ…

【Unity】ゲームオブジェクトに「EditorOnly」タグを設定してビルドに含まれないようにする

概要 Hierarchy でゲームオブジェクトを選択して Inspector の Tag で「EditorOnly」を設定すると Unity エディタ上でのみ存在するゲームオブジェクトになります アタッチしたスクリプトも動かなくなります

【Unity】指定したオブジェクトからルートとなるオブジェクトを取得する拡張メソッド

ソースコード using UnityEngine; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// ルートとなるオブジェクトを返します /// </summary> public static GameObject GetRoot(this GameObject self) { …

【Unity】ローカル座標を維持したまま親オブジェクトを設定する拡張メソッド

ソースコード using UnityEngine; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// ローカル座標を維持して親オブジェクトを設定します /// </summary> public static void SafeSetParent(this GameO…

【Unity】Hierarchy ビューで右クリックされた時に表示されるメニューを独自に実装する

Unity は Hierarchy ビューで右クリックされた時に表示されるメニューをカスタマイズできないですが 独自に作成したメニューを表示させることは可能です 試しに Hierarchy ビューで Ctrl + Shift + クリックされた時に 独自に作成したメニューを表示するスク…

【おすすめスライド】「Unityと.NET」

関連記事

【Unity】指定したゲームオブジェクトから名前で子オブジェクトを検索する拡張メソッド

はじめに 例えばこれらのオブジェクトが Hierarchy に存在する場合に UIRoot から Button という名前の子オブジェクトを検索する場合、 次のように処理を書きますが using UnityEngine; public class UIRoot : MonoBehaviour { private void Awake() { Trans…

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