UnityAPI学习(一)

事件函数(函数)
Unity Manual—Scripting—Scripting concepts—Order of execution for event functions

Reset:在编辑器模式下使用reset功能或触发script时执行一次

Awake:当场景运行起来时或游戏物体被实例化时调用

OnEnable/OnDisable:禁用或启用游戏物体时调用

FixedUpdate:按照每秒固定帧率调用(可用于控制平滑运动)

Update/LateUpdate:按照游戏实际帧率调用,先调用/后调用

OnTrigger/OnCollision:用来触发触发器/碰撞器

OnMouse:与鼠标相关的输入事件

OnDrawGizmos:绘制Gizmos(场景中的一些辅助线)

OnApplicationPause:暂停时调用

OnApplicationQuit:退出时调用

OnDestroy:退出后调用销毁游戏物体

void Awake()
{
    Debug.Log("Awake");
}

Time类(静态变量)
Working in Unity—Editor Features—Project Settings—Time

captureFramerate:设置帧的速率完成截图

deltaTime:每一帧运行占用的时间(1/60上下)

fixedDeltaTime:固定每秒运行的帧率

fixedTime:从开始运行经过的时间

frameCount:从开始运行的帧数

timeScale:时间的比例,可以用来调整倍速

timeSinceLevelLoad:场景加载之后运行的时间,更换场景会重新计时

realtimeSinceStartup:不受暂停影响持续计时,可以用来测试方法性能

smoothDeltaTime:平滑的时间变化

void Update()
{
    Debug.Log(Time.deltaTime);

    cube.Translate(Vector3.forward * Time.deltaTime);//速度*时间固定每帧移动的距离
    Time.timeScale = 0;//控制游戏暂停或倍速
}
public int runCount = 10000;

void Start()
{
    float time1 = Time.realtimeSinceStartup;
    for(int i = 0; i < runCount; i++)
    {
        Method1();
    }
    float time2 = Time.realtimeSinceStartup;
    Debug.Log(time2 - time1);

    float time3 = Time.realtimeSinceStartup;
    for (int i = 0; i < runCount; i++)
    {
        Method2();
    }
    float time4 = Time.realtimeSinceStartup;
    Debug.Log(time4 - time3);
}
创建游戏物体的方法
public GameObject prefab;

void Start()
{
    //第一种:直接new
    GameObject one = new GameObject("Cube");

    //第二种:根据预制件或其他游戏物体克隆实例化
    GameObject.Instantiate(prefab);

    //第三种:创建原始的基本图形
    GameObject.CreatePrimitive(PrimitiveType.Cube);
}
游戏物体的组件
变量

transform:定义游戏物体的位置,每个游戏物体必须有且仅有一个

tag:标签,区分场景中的游戏物体

layer:游戏物体所在层

scene:所在场景

activeinHierarchy:判断游戏物体是否处于激活状态,子物体跟随父物体为false

activeSelf:子物体有自己的激活状态

方法

SetActive:设置物体的激活属性,布尔型

AddComponent:为游戏物体添加组件

CompareTag:比较标签

BroadcastMessage:向所有MonoBehaviour的游戏物体及其子物体发送消息,调用有方法名参数的方法,无需获取引用

SendMessage:向所有MonoBehaviour的游戏物体发送消息,不包括子物体

SendMessageUpwards:向所有MonoBehaviour的游戏物体及其父物体发送消息,但父物体只有一个

GetComponent:得到游戏物体的组件,查找到第一个

GetComponentInChildren:得到物体孩子上的组件

GetComponentInParent:得到物体父亲上的组件

GetComponents:得到游戏物体的组件,查找到所有

GetComponentsInChildren:得到物体孩子上的组件,查找到所有

GetComponentsInParent:得到物体父亲上的组件,查找到所有

void Start()
{
    GameObject one = new GameObject("Cube");
    one.AddComponent<Rigidbody>();
    Debug.Log(one.tag);
}
public GameObject target;

void Start()
{
    target.BroadcastMessage("Attack", null, SendMessageOptions.RequireReceiver);//必须要有接收者
    target.BroadcastMessage("Attack", null, SendMessageOptions.DontRequireReceiver);//不一定要有接收者
}
Object下的静态方法

name:物体的名字

Destroy:可以销毁游戏物体或组件,也可以指定经过多少时间后销毁

DontDestroyOnLoad:传递一个游戏物体,当场景变换时不销毁原来场景中的游戏物体,而是带到下一个场景中去

FindObjectOfType:找到场景中第一个对应的组件时返回

FindObjectsOfType:找到场景中所有对应的组件,不查找未激活的游戏物体

void Start()
{
    Light light = FindObjectOfType<Light>();
    light.enabled = false;
}
GameObject独有的静态方法

CreatePrimitive:创建基本图形

Find:遍历场景中所有物体查找,如果游戏物体过多比较耗费性能,返回游戏物体

FindGameObjectsWithTag:在标签范围内查找,返回游戏物体数组

SetActive:激活或禁用游戏物体

void Start()
{
    GameObject go = GameObject.Find("Main Camera");
    go.SetActive(false);
}

void Start()
{
    GameObject[] gos = GameObject.FindGameObjectsWithTag("MainCamera");
    gos[0].SetActive(false);
}

MonoBehaviour
变量

runInEditMode:在编辑模式下运行

方法

Invoke:调用某个方法,参数为方法名字的字符串、时间

InvokeRepeating:重复调用某个方法,参数为方法名字的字符串、第一次调用多久后开始的时间、多久调用一次的时间

CancleInvoke:取消调用某个方法,没有参数

协程方法:

主程序运行中,不需要等到协程方法执行完就可以继续向下执行,返回值是IEumerator,返回参数的时候使用yield return null/0

StartCoroutine:开启调用协程方法,StartCoroutine(method());

StopAllCoroutines:停止调用所有协程方法

StopCoroutine:停止调用协程方法,与开始的参数形式要对应

void Start()
{
    Invoke("Attack", 3);
}

void Attack()
{
    print("攻击目标");
}
void Start()
{
    StartCoroutine(ChangeColor());
}

IEnumerator ChangeColor()
{
    yield return new WaitForSeconds(3);//等待三秒再开始执行
    cube.GetComponent<MeshRenderer>().material.color = Color.blue;
    yield return null;
}
public GameObject cube;

void Start()
{

}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        StartCoroutine(Fade());
    }
}

IEnumerator Fade()
{
    for(float i=0;i<=1;i+=0.1f)
    {
        cube.GetComponent<MeshRenderer>().material.color = new Color(i, i, i, i);
        yield return new WaitForSeconds(0.1f);
    }
}
继承

继承自conponent中的成员方法:

isActiveAndEnabled:判断组件是否激活

enabled:true/false设置是否激活组件

tag:获取该组件游戏物体的标签

gameObject:获取该组件的游戏物体

transform:获取该组件游戏物体的位置

name:获取该组件游戏物体的名字

静态方法:

print:输出

消息

OnMouseDown:在GUI和collider情况下,按下鼠标时调用

OnMouseDrag:在鼠标拖拽时调用

OnMouseEnter:鼠标移上物体时调用一次

OnMouseExit:鼠标移出时调用

OnMouseOver:鼠标在物体上时调用,鼠标一直在一直调用

OnMouseUp:鼠标抬起时调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值