Unityのインスタンスを分かりやすく区別する方法が2つあります。
まず1つは**「Hierarchy上にあるかないか」**です。
Hierarchy上にあるものはすべて再生時にインスタンス化されます。
2つ目は、Hierarchy上からアタッチされているかいないかです。
Hierarchy上からアタッチした画像やPrefabなどは表示されていないくてもインスタンス化されます。
これでUnityが自動的に行うインスタンスの大体を理解できると思います。
それを考慮して該当コードを考えてみるとこんな感じです。
###GameObject.Find()はHierarchy上のオブジェクトを参照するメソッドなので参照できるオブジェクトはすべてインスタンス
C#
1GameObject cube = GameObject.Find("Cube");
###cubeがHierarchy上にあればインスタンス
言葉にすると**「cubeオブジェクトにアタッチされているRendererコンポーネントインスタンスをGetComponent<T>()で参照し、materialプロパティ内にあるcolorプロパティにColorインスタンスを代入する。」**といった感じです。
C#
1cube.GetComponent<Renderer>().material.color = new Color(1f,0,0,0.5f);
###インスタン化された時に利用できるイベントです。イベントは大体先頭にOnがついています。
Colliderの衝突はHierarchy上でしかできないので引数のcolliderはインスタンスです。
C#
1OnTriggerExit(Collider collider)
###上記にあてはまらない例外
例外もあります。代表的なのはResources.loadです。Resourcesというフォルダを用意することでそこから動的にインスタンスを取得できます。
その他には、Hierarchy上からオブジェクトを隠すHideFlags.HideInHierarchyもありますが、1,2を知っていれば「Hierarchy上にあるものを隠しているのでインスタンス」と分かるので簡単ですね。
###スクリプトで考えてみる
MonoBehaviourはnewできません。理由はUnityが自動でnew(インスタンス化)するからです。
やってみると分かるのですが、Hierarchy上ではMonoBehaviourを継承したクラス以外アタッチできません。ここからHierarchy上のものはすべてインスタンスということがわかります。
###最後に
Unityは自身でnewしなくてもインスタンスが生成されるのでそこが難しく感じたのかなと思い今回の回答を考えました。実は今回1つ大きな間違いがあります。それは、Hierarchy上に無くてもコード上でMonoBehaviourが継承されていたり参照したUnity APIをはすべてインスタンスとういことです。Hierarchy上にあるかないかは関係ないのです。なぜスクリプト上ではなくHierarchy上で考えてほしいかと申しますと、2つ目のHierarchy上からアタッチされているかいないかがあるからです。
**「Hierarchy上に存在するまたはアタッチする=newされメモリ上に展開される」**ということなので、あまり使わないものをアタッチしていると知らないうちにメモリに大きな影響を与えていることがあります。今回のことを理解していると「よく使うからHierarchy上にアタッチしておこう」や「チュートリアルは1度しか使わないからResources.loadで読み込もう」など前もってメモリに優しい設計ができるからです。
長々とすみません。以上です。
###GameObjectとgameObjectの違い
GameObjectはクラスでgameObjectはインスタンスです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。