Unity 3 D足跡1——ゲーム対象&コンポーネント

5475 ワード

Unity 3 Dは操作インタフェースの資料を紹介して牛の毛のように多くて、更にこれらを記録して、人は自分ですべて役に立たないで、ここでいくつか役に立つものを記録することができることを望んで、後で必要な時に調べることができます
 
エンジンを熟知するには、エンジンの思想をはっきりさせる必要があると思います.そうすれば、もっと理解できるでしょう.
 
ここ数日の勉強を通して、Unity 3 Dにはいくつかの重要な概念が貫かれています.GameObject、Component、Sceneがあります.Unity 3 Dの全体的な考え方は、この3つの概念を組み合わせたものだと思いますが、他に何かありますか.美術家にとってはフィルター、特効、骨格などの概念がたくさんあるかもしれませんが、プログラマーにとっては、この3つの概念だけで、Sceneを乾かすことができるかもしれません.私たちが最も理解しなければならないので、最も多くのもの、つまりGameObjectとComponentの2つを使う必要があります.
 
Sceneは1つのとても空っぽなもので、それはゲームの中の1つのシーンを表して、プログラムの1つの入り口で、利点は1つのゲームを異なるシーンに分けてそれからそれぞれ開発することができて、シーンの間は互いに影響しないことができて、全体の設計思想の中で、それは1つの容器で、容器の中に何がありますか?GameObjectのみですが、Unity 3 Dの中のTerrainもGameObjectの一種だと思います.
2つのSceneを同時に実行させる可能性があるかどうか疑問です.例えば、ダブルゲームで、左が私の画面、右が友達の画面です(GameObjectのメニューの下にはありませんが).(
ここで私は
また
質問ですが、コードの中でSceneを動的に作成できますか?あまり意味がないかもしれませんが、ただのプログラマーの好奇心です)現在のところ、Unity 3 DではCtrl+NやFileメニューの下のボタンで新しいシーンを直接作成することができます.
 
GameObjectは私たちが最も接触しているものだと思います.それはゲームの対象を代表しているからです.例えば、中のゲームのキャラクター、道具、敵などです.ここではGameObjectとComponentだけを記録すればいいと思いますが、
GameObjectはComponentのコンテナであり、一部のComponentは直接GameObjectとして作成することもできます.これは空のGameObjectのように、コンポーネントが掛けられています.では
GameObjectとGameObjectの関係は何ですか?親子関係であってもよいし、友人であってもよい(いずれもシーン内にあり、親子関係はない)ので、1つのGameObjectもGameObjectのコンテナである
 
では、どのようにしてGameObjectを作成しますか?メニューから作成することもできますし、コードの中でnewのGameObjectを直接作成することもできます.GameObjectとComponentはObjectに継承されます.GameObjectはAddComponentとGetComponent関数で追加して、コンポーネントを取得することができます(
コンポーネントを削除しますか?Destroy?)
 
AddComponentには2つのリロード関数があります
 
//            ,            ,       
1.Component AddComponent(className : String)
 
gameObject.AddComponent("myScript");        //      
SphereColider sc = gameObject.AddComponent("SphereCollider");    //         

 
//コンポーネントのタイプで追加、ここでは汎用を使用して実現
2.Component AddComponent()
 
//Tは任意のタイプを表すが、これは高級概念で、ここでしか使われていないようだ.
gameObject.AddComponent(); 
 
コンポーネントを取得する関数はたくさんあります
 
Component GetComponent()
 
Component GetComponent()
 
Component[] GetComponents()
 
Component[] GetComponents()
 
Component GetComponentInChildren()
 
Component GetComponentInChildren()
 
Component[] GetComponentsInChildren()
 
Component[] GetComponentsInChildren()

 
 
//スクリプトオブジェクトを取得するとき、私たちが取得したタイプはスクリプトの名前であり、そのクラス名でもあります.このクラスを取得すると、このオブジェクトの公有関数、公有変数、C#を操作することができます.ここではクラス名です.ファイルでクラスの名前を変更した場合、ファイル名とクラス名が一致しなければ、Unityはエラーを報告します.
var script = GetComponent("myScript") as myScript;
script.myFunction();
 
myScript script = GetComponent();
script.myFunction();

   
//各スクリプトは1つのタイプで、Unity 3 Dには多くのベースコンポーネントタイプが用意されています.例えば、GameObjectには多くのジョイントJointがあり、GetComponentsメソッドは配列を返してくれます.汎用とコンポーネント名の2つの呼び出し方法は上記と一致しています.
 
HingeJoint[] joints = gameObject.GetComponents();
// or joints = gameObject.GetComponents("HingeJoint");
 
foreach(HingeJoint joint in joints)
{
    joint.useSpring = false;
}

   
GetComponentInChildrenシリーズ関数はGetComponentシリーズ関数よりも検索範囲が広くなり、GameObjectおよびそのサブオブジェクト上のすべてのタイプがtypeのコンポーネントは、アクティブなコンポーネントのみを返します(
GameObjectにマウントされているすべてのスクリプトオブジェクトを取得するにはどうすればいいですか?)
 
最後に、Unity 3 Dにはどのようなコンポーネントがあるのかを整理します!
 
カメラ、MonoBehavior(Component)に継承
 
Transform変換コンポーネント、オブジェクトの位置、方向、サイズなどを変更するために使用されます
 
ライトライト、MonoBehavior(Component)に継承
 
SkyBox、MonoBehavior(Component)に継承
 
RigidBodyリジッドボディは、物理的に物体の位置をシミュレートすることができます
 
Collider衝突器、Box、Sphere、Capsule、MeshなどのColliderを含む
 
XXXJointシリーズ、各種関節の物理シミュレーションコンポーネント
 
XXXClothシリーズ、布の物理特性シミュレーションコンポーネント
 
GUIXXXシリーズ、非常に多くの種類...グラフィックユーザーインタフェースです
 
ParticleXXXシリーズ、パーティクル、パーティクルアニメーション、パーティクルエミッタ、パーティクルレンダラー
 
よく使うのはこれくらいでしょうか、おおよその印象がありますが、あとで何を使っても学ぶようにしましょう(
ドラッグすることで、1つのGameObjectを別のGameObjectの子供に設定したり取り消したりすることができますが、コードの中ではどうすればいいですか?
 
理解しにくいのは、GameObjectの親子関係を設定するには、Transfromコンポーネントのparent属性で設定する必要があります