【Unity】classに付与する属性2024/08/03属性とは? Unityではなく、C#の機能として属性というものがあります。 以前にはUnityのインスペクタを拡張する属性について説明しました。 【Unity】インスペクタを拡張する属性 - GARNET LOG Header・Tooltip・Range・SpaceなどUnityのインスペクタ表示をカスタマイズできる属性の使い方を解説。コードなしで見やすいインスペクタが作れる。 GARNET LOG 今回はコンポーネントに付与する属性について説明します。UnityC#
【Unity】Unityで最初に呼ばれるメソッド2024/07/28Unityで最初に呼ばれる処理 Unityでは、特定の属性を使用して、特定のタイミングで最初に呼ばれる処理を制御することができます。 これらの属性を理解し、適切に使用することで、ゲーム開発の効率性と品質を向上させることができます。Unity
【Unity】ScriptableObjectを使ってみる2024/07/20ScriptableObjectとは? ScriptableObjectは、Unityでデータを管理するための一つの方法です。 ゲームオブジェクトに依存しないデータを保持したい場合や、複数のゲームオブジェクト間でデータを共有したい場合に使用します。 ScriptableObject - Unity マニュアル ScriptableObject は、クラスのインスタンスとは独立した大量のデータを保存するためのデータコンテナです。ScriptableObject の主な使用例の 1 つに、値のコピーを避けてプロジェクトのメモリ使用量を減らすことがあります。これは、プロジェクトに プレハブ があり、設定された MonoBehaviour スクリプトに不変のデータを保存している場合に有効です。 docs.unity3d.com イメージとしては、MonoBehaviourを継承したコンポーネントを作成した場合に含まれる、データ部分を抜き出したものです。 StartやUpdateのようなライフサイクルイベントは持ちません。Unity
【Unity】GetComponentについて考える2024/07/13GetComponentメソッド UnityEngineには、GetComponentというメソッドがあります。 主にGameObjectにアタッチされているコンポーネントを取得するのに使用します。 GameObjectクラス、及びComponentクラス内に実装されているので、 MonoBehaviourを継承したコンポーネントクラス内からも呼ぶことが出来ます。 Component-GetComponent - Unity スクリプトリファレンス Gets a reference to a component of type T on the same GameObject as the component specified. docs.unity3d.comUnity
【Unity】Findについて考える2024/07/07Findメソッド Unityには名前でヒエラルキー上のGameObjectを検索するメソッドが用意されています。 GameObject.Find GameObject.Findはヒエラルキー上のアクティブなGameObjectを取得します。 GameObject-Find - Unity スクリプトリファレンス name で GameObject を検索し返します。 docs.unity3d.com private void Awake() { var player = GameObject.Find("Player"); } また、パスを区切って階層化することも出来ます。 private void Awake() { var weapon = GameObject.Find("Player/Weapon"); } Transform.Find 同様にTranformを検索する、Transform.Findもあります。 こちらはGameObject.Findと異なり、インスタンスのメソッドになります。 そのため対象のTransformの子供から探してくることになります。 Transform-Find - Unity スクリプトリファレンス Finds a child by n and returns it. docs.unity3d.com private void Awake() { var weapon = transform.Find("Weapon"); }Unity
【Unity】TextMeshProでマテリアルを追加する2024/06/30TextMeshProについて TextMeshProについてと導入の手順についてはこちらをご覧ください。 【Unity】TextMeshProで日本語を扱う - GARNET LOG TextMeshProで日本語フォントを使うためのFontAsset作成手順と、文字化けや豆腐表示の対処法を解説。日本語対応に必要な設定がひととおりわかる。 GARNET LOGUITextMeshPro
【Unity】最初に開かれるシーンを指定する2024/06/23プレイモード時に最初に開くシーンを指定する Unity上でゲームを作っていると、タイトル画面とゲーム画面などでシーンを分けることがあります。 開発が進んでくるとゲーム全体の初期化の都合でタイトル画面用シーンから起動しないといけなくなってくるケースがあります。 その場合、ゲーム画面用シーンを編集した後いちいちタイトル画面用シーンを開き直して実行する手間が生じます。 そんなときに役に立つのが、EditorSceneManager.playModeStartSceneです。 Unity - Scripting API: SceneManagement.EditorSceneManager.playModeStartScene docs.unity3d.comUnityエディタ拡張
【Unity】インスペクタで使用できる数式2024/06/15インスペクタ上で計算する インスペクタ上の数値を入力できる欄では、符号を使って計算を行うことが出来ます。 右に1m移動したい(+1) 幅を2倍にしたい(*2) 高さを今の半分にしたい(/2) などなど。 Transform上の座標などは、計算式を入力している段階でSceneView上に反映されるので試行錯誤する場合に役に立ちます。Unityエディタ拡張
【Unity】SpriteAtlasでスプライトをまとめて描画する2024/06/08スプライトアトラスとは? スプライトアトラス(Sprite Atlas)とは、スプライトの地図という意味になります。 Unityでは、2D Spriteパッケージで提供されています。 複数のスプライトを一つのテクスチャにまとめることで、描画パフォーマンスを向上させるのに役立ちます。 スプライトアトラス V2 - Unity マニュアル Sprite Atlas (スプライトアトラス) システムの元のバージョン 1 では、テクスチャ (スプライトやテクスチャ内のスプライト、およびフォルダー内のスプライトからの) をアトラステクスチャにパックします。バージョン 1 は、再生モードに入るときや、プレイヤーやアセットバンドルをビルドするときに、これらのテクスチャをパックします。AssetDatabase V1 は依存関係を持つことができず、名前付きオブジェクトのインポーターサポートもありません。そのため、Unity はカスタムメカニズムを通じてスプライトアトラスをパックし、テクスチャとレンダリングデータの出力データを Library/AtlasCacheフォルダーに保存します。 docs.unity3d.comUIUnity
【Unity】インスペクタを拡張する属性2024/06/02属性とは? Unityではなく、C#の機能として属性(Attribute)というものがあります。 Attribute クラス (System) カスタム属性の基本クラスを表します。 learn.microsoft.com 属性とはクラス、メンバー(フィールドやメソッドなど)に追加の情報を与えるためのものです。 例えば、以下の様なコードに含まれる[SerializeField]の部分です。 private void Player : MonoBehaviour { [SerializeField] private int _hp; } 通常、private変数はシリアライズされずインスペクタ上にも表示されません。 [SerializeField] が指定されている場合は、インスペクタ上に表示され、編集した結果もシリアライズされるため、 シーンやプレハブ中で保持されるようになります。UnityC#