1.Mono Develop脚本编辑器介绍
Unity3D目前支持三种语言的脚本程序,包括C#,JavaScript,Boo,在一个游戏中可以使用一种或者同时使用一种或者同时使用多种语言来实现脚本的控制。
三种不同的语言其实效率是相当的,最后都会编译成Unity 3D中的代码
Mono Develop脚本编辑器介绍
注意:
1、项目运行过程中的修改不会保存
2、脚本只能依附于游戏对象或由其他脚本调用才能运行
3、一个脚本可以放在多个游戏对象上面,是多个实例
4、一个脚本的多个实例和其他脚本之间互不干扰
2.VS编辑器
创建,克隆,销毁游戏对象
1.程序创建游戏对象:
void Start () {
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.name = "立方体";
cube.renderer.material.color = Color.red;
}
2.程序克隆游戏对象:
GameObject obj = (GameObject)GameObject.Instantiate(cube); //转换类型
3.程序销毁游戏对象:
Destroy(obj, 1); //红字代表对象数量
4.特点:
1.动态创建出来的对象运行时在Hierarchy中可以看到
2.克隆游戏产生的复制对象的效率高,比如游戏中产生大量的子弹,调用Instantiate来生成对象,Destroy(object)是立即销魂对象
3.动态传脚本的方法(只需把脚本加入到AddComponent)即可
1.用代码给物体添加名为(eg)的脚本
GameObject.AddComponent("eg");
2.给物体添加刚体
cube.AddComponent("Rigidbody");
3.物体添加碰撞器
cube.AddComponent("SphereCollider");
3.常用核心类:
1.GameObject类:
本类是“游戏对象”类,场景中所有的游戏对象都是通过实例化该类来生成的,当你把一个资源放入场景中去,Unity3D就会自动通过GameObject类来
生成对应的游戏对象:
1.通过名称来查找:
GameObject cube = GameObject.Find("Cube");
2.通过游戏标签获取多组游戏对象:
GameObject[] go = GameObject.FindGameObjectsWithTag("Player");
2.Time类:
属性:deltaTime
说明:方法Update():受当前渲染效率的影响,有时快有时慢,帧率会变化,Update被调用时的时间间隔就会发生变化,Time.deltaTime获得上次Update一次经历的时间
例子:
float a=3.0f;
void Update(){
a-=Time.delaTime;
print(a);
按下A键,游戏物体向左移动;按下D键,游戏物体向右移动
float move_h=0;
if (Input.GetKey (KeyCode.A)) {
move_h-=Time.deltaTime;
}
if (Input.GetKey (KeyCode.D)) {
move_h+=Time.deltaTime;
}
transform.Translate(new Vector3(move_h,0,move_v));
}
4.组件引用函数:
如果要访问的组件不属于常用组件,或者访问的是游戏对象上的脚本(脚本属于自定义组件),可以通过组件引用函数来得到组件的引用。
GetComponent 得到组件
GetComponents 得到组件列表(用于有多个同类型组件的时候)
GetComponentInChildren 得到对象或对象子物体上的组件
ScriptName other = GameObject.GetComponent<ScriptName>();
5.协同程序:
1.协同程序,即在主程序运行时同时开启另一段逻辑处理来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。
2.在Unity3D中,使用MonoBehaviour.StartCoroutine方法即可开启一个协同程序,也就是说该方法必须在MonoBehaviour或继承于MonoBehaviour的类中调用。
3.在Unity3D中,使用StartCoroutine(string methodName)可以开启一个线程。
6.Yield:
1.Yield语句是一种特殊类型的Return返回语句,它可以确保函数在下一次被执行时,不是从头开始,而是从Yield处开始
2.可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行
void Start () {
print("Start开始");
StartCoroutine(Do());
print("Do");
}
IEnumerator Do(){
print("Do开始");
yield return new WaitForSeconds(3.0f);
print("暂停3秒后");
}
7.Random类(随机数):
float a=Random.value;
int b=Random.Range(0,100) 包括最大和最小
float c=Random.Range(0.0f,1.0f); 包括最小但不包括最大
8.消息传递函数:
GameObject.SendMessage:向自身的脚本中发送消息
GameObject.BroadcastMessage:向自身即子物体脚本中发送消息
GameObject.SendMessageUpwards:向自身即父物体中发送消息
例子:
Sphere:
void Start () {
gameObject.SendMessageUpwards ("Do","向父对象发出信息");
}
Cube:
void Do(string message){
print (message);
}
Sphere:
void Start () {
gameObject.SendMessageUpwards ("Do","向父对象发出信息");
}
Cube:
void Do(string message){
print (message);
}
更多精彩关注: http://www.gopedu.com/
Unity3D目前支持三种语言的脚本程序,包括C#,JavaScript,Boo,在一个游戏中可以使用一种或者同时使用一种或者同时使用多种语言来实现脚本的控制。
三种不同的语言其实效率是相当的,最后都会编译成Unity 3D中的代码
Mono Develop脚本编辑器介绍
注意:
1、项目运行过程中的修改不会保存
2、脚本只能依附于游戏对象或由其他脚本调用才能运行
3、一个脚本可以放在多个游戏对象上面,是多个实例
4、一个脚本的多个实例和其他脚本之间互不干扰
2.VS编辑器
创建,克隆,销毁游戏对象
1.程序创建游戏对象:
void Start () {
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.name = "立方体";
cube.renderer.material.color = Color.red;
}
2.程序克隆游戏对象:
GameObject obj = (GameObject)GameObject.Instantiate(cube); //转换类型
3.程序销毁游戏对象:
Destroy(obj, 1); //红字代表对象数量
4.特点:
1.动态创建出来的对象运行时在Hierarchy中可以看到
2.克隆游戏产生的复制对象的效率高,比如游戏中产生大量的子弹,调用Instantiate来生成对象,Destroy(object)是立即销魂对象
3.动态传脚本的方法(只需把脚本加入到AddComponent)即可
1.用代码给物体添加名为(eg)的脚本
GameObject.AddComponent("eg");
2.给物体添加刚体
cube.AddComponent("Rigidbody");
3.物体添加碰撞器
cube.AddComponent("SphereCollider");
3.常用核心类:
1.GameObject类:
本类是“游戏对象”类,场景中所有的游戏对象都是通过实例化该类来生成的,当你把一个资源放入场景中去,Unity3D就会自动通过GameObject类来
生成对应的游戏对象:
1.通过名称来查找:
GameObject cube = GameObject.Find("Cube");
2.通过游戏标签获取多组游戏对象:
GameObject[] go = GameObject.FindGameObjectsWithTag("Player");
2.Time类:
属性:deltaTime
说明:方法Update():受当前渲染效率的影响,有时快有时慢,帧率会变化,Update被调用时的时间间隔就会发生变化,Time.deltaTime获得上次Update一次经历的时间
例子:
float a=3.0f;
void Update(){
a-=Time.delaTime;
print(a);
按下A键,游戏物体向左移动;按下D键,游戏物体向右移动
float move_h=0;
if (Input.GetKey (KeyCode.A)) {
move_h-=Time.deltaTime;
}
if (Input.GetKey (KeyCode.D)) {
move_h+=Time.deltaTime;
}
transform.Translate(new Vector3(move_h,0,move_v));
}
4.组件引用函数:
如果要访问的组件不属于常用组件,或者访问的是游戏对象上的脚本(脚本属于自定义组件),可以通过组件引用函数来得到组件的引用。
GetComponent 得到组件
GetComponents 得到组件列表(用于有多个同类型组件的时候)
GetComponentInChildren 得到对象或对象子物体上的组件
ScriptName other = GameObject.GetComponent<ScriptName>();
5.协同程序:
1.协同程序,即在主程序运行时同时开启另一段逻辑处理来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。
2.在Unity3D中,使用MonoBehaviour.StartCoroutine方法即可开启一个协同程序,也就是说该方法必须在MonoBehaviour或继承于MonoBehaviour的类中调用。
3.在Unity3D中,使用StartCoroutine(string methodName)可以开启一个线程。
6.Yield:
1.Yield语句是一种特殊类型的Return返回语句,它可以确保函数在下一次被执行时,不是从头开始,而是从Yield处开始
2.可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行
void Start () {
print("Start开始");
StartCoroutine(Do());
print("Do");
}
IEnumerator Do(){
print("Do开始");
yield return new WaitForSeconds(3.0f);
print("暂停3秒后");
}
7.Random类(随机数):
float a=Random.value;
int b=Random.Range(0,100) 包括最大和最小
float c=Random.Range(0.0f,1.0f); 包括最小但不包括最大
8.消息传递函数:
GameObject.SendMessage:向自身的脚本中发送消息
GameObject.BroadcastMessage:向自身即子物体脚本中发送消息
GameObject.SendMessageUpwards:向自身即父物体中发送消息
例子:
Sphere:
void Start () {
gameObject.SendMessageUpwards ("Do","向父对象发出信息");
}
Cube:
void Do(string message){
print (message);
}
Sphere:
void Start () {
gameObject.SendMessageUpwards ("Do","向父对象发出信息");
}
Cube:
void Do(string message){
print (message);
}
更多精彩关注: http://www.gopedu.com/