次の項目は別ページに分割しました。
関連ページ:
Unity に関する基本的な情報は次のページにまとめています。
スクリプト
公式サイト:
スクリプトの作成と使用 | Unity マニュアル [公式]
使い方
参考:
スクリプトを追加する 4つの方法 | Unity + AssetStore おすすめ情報
変数
参考:
属性 (Attribute)
参考:
region ディレクティブ
参考:
region とコードのテンプレート | Unity/VR ゲーム開発日記@長崎
public / private
参考:
インスペクターで見せない変数、見せる変数まとめ | ぺんごや
プロパティ/シリアライズ (SerializeField)
インスペクターから編集できて他クラスからアクセスできないフィールドを作成する。
[SerializeField]
private int power;
public int Power {
get { return power; }
private set { power = value; }
}
Code language: C# (cs)
コードテンプレートを使用して入力する。
[SerializeField]
private $type$ $field_name$;
public $type$ $property_name$
{
get { return this.$field_name$; }
private set { this.$field_name$ = value; }
}
Code language: C# (cs)
参考:
インスペクターで値も設定したいけど、プロパティを使いたい/めんどくさいのも嫌!- Qiita
Unity の SerializeField について色々な疑問に答えてみる – Qiita
Inspector で値を変える時、public と SerializeField どっち使う? | エクスプラボ
Range
参考:
Inspector で入力値の範囲を設定するチュートリアル | エクスプラボ
OnValidate
参考:
Inspector で入力できる値を制限する OnValidate 関数 | コガネブログ
Inspector から値を変更したときにコールバック処理を実行する簡単な方法 – Qiita
読み取り専用
参考:
編集不可のパラメータを Inspector に表示する | KAZUPON 研究室
インスペクタに編集不可のパラメータを表示してみた | kandy codings 開発ブログ
ReadOnly な SerializeFileld | hiyorin のブログ
Start() 内で readonly なフィールドを初期化したい – teratail
Inspector にて配列の長さだけを変更できないようにしたい – teratail
How to make a readonly property in inspector? | Unity Answers
readonly C# keyword not so usefull in Unity | Unity Answers
静的変数 (static)
参考:
public static な変数をインスペクター上で表示する/実行前のみ編集可能 – Qiita
静的クラスの変数をインスペクターで確認する方法 | Tsumiki Tech Times
Is it possible to show Static Variables in the Inspector? – Unity Answers
定数 (const)
private const
public static readonly
参考:
const と readonly / static readonly の使い分け – Qiita
コンパイル時定数 (const) と実行時定数 (readonly) の違いを知る | エクスプラボ
定数を作るときに const と static readonly のどちらを用いるべきか | はなちるのマイノート
プリセット
参考:
実行順序 (Script Execution Order)
参考:
コンポーネントのイベント実行順についての Tips | テラシュールブログ
Script Execution Order のちょっと深い話 – Qiita
Script Execution Order settings | Unity 2019.4 Manual [Official]
DefaultExecutionOrder
参考:
DefaultExecutionOrder でスクリプトの実行順番をスクリプトから書く | はなちるのマイノート
イベント関数の実行順序
参考:
イベント関数の実行順序 | Unity マニュアル [公式]
Serializable
MonoBehaviour
を継承しない独自のクラスを定義した場合に、そのクラスのインスタンスをインスペクター上に表示して扱うためにはクラスに [Serializable]
を指定する。
参考:
自前のクラスをインスペクタから編集できるようにする | ftvlog
スクリプトのシリアル化 | Unity マニュアル [公式]
Serializable | Unity スクリプトリファレンス [公式]
カスタム製のシリアル化 | Unity 2021.2 マニュアル [公式]
SerializeReference
参考:
Unity 2019.3 から抽象クラスやインタフェースがシリアライズ可能に!使い方と注意点 | LIGHT11
SerializeReference | Unity Scripting API [Official]
エディター上で実行する (ExecuteAlways)
[ExecuteAlways]
:プレイモード/編集モード/プレハブモードの全てでスクリプトが実行される。[ExecuteInEditMode]
:廃止Application.IsPlaying
:ゲームオブジェクトがプレイモードに存在しているか判定する。
参考:
Unity 2018.3 以降 ExecuteInEditMode アトリビュートは廃止に向かっていく | LIGHT11
ExecuteInEditMode を使うと編集中も処理を実行可能 | 強火で進め
スクリプトを Editor 上で動作させる | うにてぃブログ
ExecuteInEditMode と関連コンポーネントの破棄対応について | ケットシーウェア
UnityEngine.ExecuteAlways | Unity スクリプトリファレンス [公式]
UnityEngine.ExecuteInEditMode | Unity 2019.4 スクリプトリファレンス [公式]
Application.IsPlaying | Unity スクリプトリファレンス [公式]
ExecuteInEditMode 終了の方法 – teratail
RequireComponent
「Rigidbody」を必須コンポーネントにする。
[RequireComponent(typeof(Rigidbody))]
public class Example : MonoBehaviour
{
// ...
}
Code language: C# (cs)
参考:
RequireComponent でアタッチし忘れ防止 | kan のメモ帳
RequireComponent とは & 有用性 – Qiita
確実に!必要な Component を入れる Require Component と Reset() – Qiita
RequireComponent で安全にコンポーネントを操作する | エクスプラボ
RequireComponent で依存関係にあるコンポーネントの存在を保証する | りつかのゲーム開発雑記ブログ
UnityEngine.RequireComponent | Unity スクリプトリファレンス [公式]
Reset
参考:
コンポーネントを追加した際に処理をしたい場合は、Reset を使うと良いって話 | kan のメモ帳
MonoBehaviour.Reset() の使い方 – Qiita
確実に!必要な Component を入れる Require Component と Reset() – Qiita
MonoBehaviour.Reset() とは | プログラミングとかブログ
MonoBehaviour.Reset() | Unity スクリプトリファレンス [公式]
AddComponent したときにスクリプトを走らせたい – teratail
コメント
参考:
アセンブリ定義ファイル (Assembly Definition Files)
参考:
Assembly Definition 完全に理解した – Qiita
Assembly Definition Files という神機能 | テラシュールブログ
Unity 2017.3 の Assembly Definition Files を適切に設定してコンパイルにかかる時間を削減する – Qiita
Assembly Definition を分けるとコンパイルが高速になるってホント?検証してみた! | VirtualCast Blog
Assembly Definition Files を使って、コンパイル時間を短縮する| kan のメモ帳
Assembly Definition Files を使ってるのにコンパイル時間が早くならない場合の対処法 | kan のメモ帳
Unity の Assembly Definition のお勉強 | トマシープが学ぶ
Assembly Definition Files 間の参照設定をしてみたメモ | ねぎたまらぼ
スクリプトのコンパイルとアセンブリ定義ファイル | Unity 2018.4 マニュアル [公式]
特殊フォルダーとスクリプトのコンパイル順 | Unity マニュアル [公式]
アセンブリ定義とパッケージ | Unity マニュアル [公式]
Assembly Definitions | Unity Manual [Official]
What’s the proper way to add new plugins when you also have tests? – Unity Forum
Add managed dll to an Assembly Definition – Unity Forum
テンプレート
参考:
新規スクリプト生成時のテンプレートをカスタマイズしたい | 夜中に Unity
Unity のスクリプトテンプレートを変更する | WonderPlanet Developers’ Blog
Missing スクリプト
参考:
Missing Scripts エラーの解消 前編 | ゲームは初心者にやさしく
Missing Scripts エラーの解消 後編 | ゲームは初心者にやさしく
Unity で Missing になってる場所を見つけるスクリプト | べんじゃみんの裏庭。
Cleaning Up Missing Scripts in Unity | MFYG
How do I programmatically find name of missing script? – Unity Answers
How do I Remove null components ( i.e. “Missing(Mono Script)” ) via editor script? – Unity Answers
コード:
MissingScriptResolver.cs – mikecann/Unity-Helpers – GitHub
クラス名がコンフリクトする
参考:
「同じ NameSpace で、同じクラス名の、異なるクラス」は実在した! | テラシュールブログ
Namespace class conflict – Stack Overflow
.NET フレームワーク
ドキュメント:
Unity における .NET の概要 | Unity 2021.1 マニュアル [公式]
.NET プロファイルのサポート | Unity 2021.1 マニュアル [公式]
追加のクラスライブラリアセンブリの参照 | Unity 2021.1 マニュアル [公式]
フォーラム:
Experimental Scripting Previews | Unity Forum
参考:
Unity と .NET:今後の取り組みについて | Unity Blog [公式]
バージョン
ドキュメント:
参考:
Unity 2020.2 から使える C#8 の機能まとめ | LIGHT11
Unity で使える C#7 の主要機能まとめ! | LIGHT11
Unity で使える C#6 の機能を総まとめ! | LIGHT11
Unity と C# のバージョン | yotiky Tech Blog
Unity で使える C# と .NET Framework のバージョンとその調べ方 – Qiita
Unity プロジェクトに C# 8.0 / 9.0 を導入してみた | tenonno
Unity で最新バージョンの C# を使う | rarafy の技術ブログ
資料
Unity 開発者に伝えたい .NET のこと – Speaker Deck
C# Compiler Settings for Unity
リポジトリ:
参考: