Unity3D-基础小知识(一)
2016-05-22 18:42
337 查看
解释对象与资源的区别于联系,根据AngryBots,以及其他官方案例,分别总结资源和对象组织的规则。
资源可以被多个对象使用,资源整合的具体表现是直接出现在游戏场景的对象。有些资源作为模板,可实例化成游戏中具体的对象。通过案例,我们可以知道,资源和对象通常被划分为各种种类易于管理。在资源文件夹,通常有对象、材质、场景、声音、预设、贴图、脚本、动作,在这些文件夹下可以继续进行划分。而对象则一般有玩家、敌人、环境、摄像机和音乐等虚拟父类,这些父节点本身没有实体,但它们的子类真正包含了游戏中会出现的对象。
编写简单程序代码,逐一验证 MonoBehaviour 基本行为触发的条件。
public class NewBehaviourScript : MonoBehaviour {
void Awake() {
print(“onAwake!”);
}
void Start() {
print(“onStart!”);
}
void Update() {
print(“onUpdate!”);
}
void OnGUI() {
print(“onGUI!”);
}
void FixedUpdate() {
print(“onFixedUpdate!”);
}
void LateUpdate() {
print(“onLateUpdate!”);
}
void Reset() {
print(“onReset!”);
}
void OnDisable() {
print(“onDisable!”);
}
void OnDestroy() {
print(“onDestroy!”);
}
}
通过官方参考手册,查找 GameObject,Transform,Component 对象,简单解释三者之间的关系。
GameObject包含Component,Transform属于Component的一种。GameObject必定包含一个Transform组件,也可能包含其它Component。
整理官方和其他学习材料,介绍如何用程序(代码)管理一个场景的游戏对象树林。编写简单代码验证以下技术的实现:
查找对象
通过名字查找:
public static GameObject Find(string name)
通过标签查找:
单个对象:public static GameObject FindWithTag(string tag)
多个对象:public static GameObject[] FindGameObjectsWithTag(string tag)
添加子对象
public static GameObect CreatePrimitive(PrimitiveTypetype)
遍历对象树
foreach (Transform child in transform) {
Debug.Log(child.gameObject.name);
}
清除所有子对象
foreach (Transform child in transform) {
Destroy(child.gameObject);
}
预设有什么好处?与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
预设类似于一个模板,通过预设可以创建相同属性的对象,这些对象和预设关联。,对象克隆也可以创建相同属性的对象,但是对象克隆与本体无关联。即对于预设,一旦预设发生改变,所有通过预设实例化的对象都会产生相应的变化,而对象克隆不受克隆本体的影响,因此A对象克隆的对象B不会因为A的改变而相应改变。预设就有适于批量处理的好处。
解释组合模式。并编写验证程序,向组合对象中子对象 cast 消息, 验证组合模式的优点。
组合模式原理:将对象组合成树形结构来表现”部分-整体“的层次结构。组合模式使得用户以一致的方式处理单个对象以及组合对象。组合模式实现的关键——简单对象和复合对象必须实现相同的接口。
my_obj:
void sayHello() {
print(“Hello!”);
}
GameObject:
void Start () {
this.BroadcastMessage(“sayHello”);
}
层次结构:
GameObject
|—-
my_obj
运行结果:
Hello!
资源可以被多个对象使用,资源整合的具体表现是直接出现在游戏场景的对象。有些资源作为模板,可实例化成游戏中具体的对象。通过案例,我们可以知道,资源和对象通常被划分为各种种类易于管理。在资源文件夹,通常有对象、材质、场景、声音、预设、贴图、脚本、动作,在这些文件夹下可以继续进行划分。而对象则一般有玩家、敌人、环境、摄像机和音乐等虚拟父类,这些父节点本身没有实体,但它们的子类真正包含了游戏中会出现的对象。
编写简单程序代码,逐一验证 MonoBehaviour 基本行为触发的条件。
public class NewBehaviourScript : MonoBehaviour {
void Awake() {
print(“onAwake!”);
}
void Start() {
print(“onStart!”);
}
void Update() {
print(“onUpdate!”);
}
void OnGUI() {
print(“onGUI!”);
}
void FixedUpdate() {
print(“onFixedUpdate!”);
}
void LateUpdate() {
print(“onLateUpdate!”);
}
void Reset() {
print(“onReset!”);
}
void OnDisable() {
print(“onDisable!”);
}
void OnDestroy() {
print(“onDestroy!”);
}
}
通过官方参考手册,查找 GameObject,Transform,Component 对象,简单解释三者之间的关系。
GameObject包含Component,Transform属于Component的一种。GameObject必定包含一个Transform组件,也可能包含其它Component。
整理官方和其他学习材料,介绍如何用程序(代码)管理一个场景的游戏对象树林。编写简单代码验证以下技术的实现:
查找对象
通过名字查找:
public static GameObject Find(string name)
通过标签查找:
单个对象:public static GameObject FindWithTag(string tag)
多个对象:public static GameObject[] FindGameObjectsWithTag(string tag)
添加子对象
public static GameObect CreatePrimitive(PrimitiveTypetype)
遍历对象树
foreach (Transform child in transform) {
Debug.Log(child.gameObject.name);
}
清除所有子对象
foreach (Transform child in transform) {
Destroy(child.gameObject);
}
预设有什么好处?与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
预设类似于一个模板,通过预设可以创建相同属性的对象,这些对象和预设关联。,对象克隆也可以创建相同属性的对象,但是对象克隆与本体无关联。即对于预设,一旦预设发生改变,所有通过预设实例化的对象都会产生相应的变化,而对象克隆不受克隆本体的影响,因此A对象克隆的对象B不会因为A的改变而相应改变。预设就有适于批量处理的好处。
解释组合模式。并编写验证程序,向组合对象中子对象 cast 消息, 验证组合模式的优点。
组合模式原理:将对象组合成树形结构来表现”部分-整体“的层次结构。组合模式使得用户以一致的方式处理单个对象以及组合对象。组合模式实现的关键——简单对象和复合对象必须实现相同的接口。
my_obj:
void sayHello() {
print(“Hello!”);
}
GameObject:
void Start () {
this.BroadcastMessage(“sayHello”);
}
层次结构:
GameObject
|—-
my_obj
运行结果:
Hello!
相关文章推荐
- unity实现多点触控代码
- 在Unity中实现动画的正反播放代码
- Unity UGUI教程之实现滑页效果
- unity实现摄像头跟随
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- [软件资讯]Unity已支持将3D游戏导出成Flash
- ShaderLab: Pass
- Unity 武器拖尾效果
- unity常见问题之20题
- Unity3D动画存储插件
- unity 赛车相机跟随物体移动
- uLua中遇到的问题
- Unity3d 协程、调用函数、委托
- Unity3d摄像机Camera参数详解
- Unity3d多线程
- 猫都能学会的Unity3D Shader入门指南(一)