Unity3d Note1

解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系。

游戏对象是unity中表示角色,道具和场景的基本对象。他们本身不能达到什么,但他们作为组件的容器实现真正的功能。
资源:资源可以被一个或多个对象使用。有些资源作为模板,可实例化成游戏中具体的对象。

资源、对象组织的结构

游戏对象是父类和子类的关系。
资源文件夹通常有对象、材质、场景、声音、预设、贴图、脚本、动作,在这些文件夹下可以继续划分。

编写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件

void Awake() {
    Debug.Log ("onAwake");
}
void Start () {
    Debug.Log ("onStart");
}

void Update () {
    Debug.Log ("onUpdate");
}
void FixedUpdate() {
    Debug.Log ("onFixedUpdate");
}
void LateUpdate() {
    Debug.Log ("onLateUpdate");
}
void OnGUI() {
    Debug.Log ("onGUI");
}
void Reset() {
    Debug.Log ("onReset");
}
void OnDisable() {
    Debug.Log ("onDisable");
}
void OnDestroy() {
    Debug.Log ("onDestroy");
}

result

查找脚本手册,了解 GameObject,Transform,Component 对象

游戏对象是unity中表示角色,道具和场景的基本对象。他们本身不能达到什么,但他们作为组件的容器实现真正的功能。
Transform组件决定了场景中每一个对象的位置,旋转和缩放。每一个游戏对象都有一个transform。
component是任何与gameobject相关的东西的基类。
table的对象是GameObject,属性有activeInHierarchy, activeSelf, isStatic, layer, scene, tag, transform.
Component有Cube, Box Collider, Mesh Renderer.
UML

整理相关学习资料,编写简单代码验证以下技术的实现:

  • 查找对象
    1.通过名字查找:public static GameObject Find(string name)
    2.通过标签查找单个对象:public static GameObject FindWithTag(string tag)
    3.通过标签查找多个对象:public static GameObject[] FindGameObjectsWithTag(string tag)
  • 添加子对象: public static GameObect CreatePrimitive(PrimitiveTypetype)
  • 遍历对象树:foreach (Transform child in transform) {};
  • 清除所有子对象: foreach (Transform child in transform) { Destroy(child.gameObject);}

资源预设(Prefabs)与 对象克隆 (clone)

预设 (Prefab) 是一种资源 - 存储在工程视图 (Project View) 中可重复使用的游戏对象 (GameObject)。预设 (Prefabs) 可放入到多个场景中,且每个场景可使用多次。向场景添加一个预设 (Prefab) 时,就会创建它的一个实例。
所有预设 (Prefab) 实例都链接到原始预设 (Prefab),实质上是原始预设的克隆。不管您的工程中有多少个实例,您对预设 (Prefab) 作薄出任何更改时,您会看到这些更改应用于所有实例。而对象克隆本体和克隆出的对象是不相影响的。

GameObject anotherTable=(GameObject)Instantiate(table.gameObject);

尝试解释组合模式(Composite Pattern / 一种设计模式)。使用 BroadcastMessage() 方法向子对象发送消息

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。组合模式是将对象组合成树形结构以表示“部分-整体”的层次结构,它使得用户对单个对象和组合对象的使用具有一致性。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void ApplyDamage(float damage) {
        print(damage);
    }
    void Example() {
        BroadcastMessage("ApplyDamage", 5.0F);
    }
}

猜你喜欢

转载自blog.csdn.net/happy990/article/details/79654078