实际开发最常用的就是unity引擎提供的API。
首先对整个体系结构有大概的了解。
自己写的类之所以能够调用unity的api,是因为继承了MonoBehaviour。
功能是由MonoBehaviour及其父类提供。
和传统c#开发不同,unity的api通常是不允许new对象的,这里很容易产生混淆。
实际后台运行的代码,unity必然也new了对象,只不过隐藏起来了,那不能new对象,我们又怎么调用其对象的方法呢?
unity提供了一种“绕路”的方法。
整个过程大概可分为两大类:
①最常用的,unity后台new了之后,会保存起来,放进MonoBehaviour先辈类Component的属性中,比如transform和gameObject,这两者就是Transform类和GameObject类的实例对象。
②不太常用,unity后台new了之后,会保存起来,提供了GetComponent方法,它保存的就是Component类的实例对象。
在单个对象上操作
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lifecycle : MonoBehaviour
{
//string name;
void OnGUI()
{
if (GUILayout.Button("点击")) {
prt ();
}
}
void prt()
{
//transform来自于Component类
transform.Translate (new Vector3(0,0,1),Space.World);
}
}
我们自己写的类中并没有new Transform类,不过可以通过其父类的transform属性间接访问该对象,这句话的意思就是按照世界坐标,以z轴正方向移动1米。
操作的是脚本挂载的那个游戏对象。
void prt()
{