Bootstrap

Unity API常用方法和类

什么是API?——预先设置好的编程接口


事件函数及常用脚本

事件函数的执行顺序

具体可参考:docs.unity.cn/cn/current/Manual/ExecutionOrder.html

*函数前加fix和不加fix的区别(如Fixupdate和update的区别):加fix后调用执行的次数固定,不会再受到电脑硬件影响。正常来说,电脑的一帧受硬件本身的影响,在0.02s左右上下浮动,update调用的次数就是0.02s左右一次,而fixupdate受客观时间影响,固定0.0166...667s执行一次

常用的事件函数

Time类

CaptureFrameRate        设置帧速率并截图

deltaTime        当前帧所占用时间

//在update方法中1s向前移动1m
//正常而言,update时间是0.02s(1/50 s)上下,直接写移动方法后物体相当于0.02s左右移动1m

cube.Translate(Vector3.forward/50f); 
cube.Translate(Vector3.forward * Time.deltaTime);    //更为精确的写法

fixedDeltaTime        固定的一帧所占用的时间

realtimeSinceStartup        从游戏开始运行到现在所用时间(不受暂停等操作影响)

//测试哪个方法更占用性能

public int runCount = 10000; //一条代码运行多次放大时间测试性能

void Method1()
{
    int i = 1+2;
}

float time1 = Time.realtimeSinceStartup;
for(int i=0;i<runCount;i++)
{
    Method1();
}
float time2 = Time.realtimeSinceStartup;
Debug(time2-time1);    //该方法执行10000次所用时间

//-----------------------------------------------------------

void Method2()
{
    int j = 1*2;
}

float time3 = Time.realtimeSinceStartup;
for(int i=0;i<runCount;i++)
{
    Method2();
}
float time4 = Time.realtimeSinceStartup;
Debug(time4-time3);   

//通过比较这两个差值,得出哪个方法更加占用性能

time        游戏实际运行时间

fixedTime        游戏实际运行时间,值和time接近

timeSinceLevelLoad        Scene在加载后游戏运行的时间,如果进入下一个scene将重新计时

frameCount        帧数

timeScale        让游戏暂停/加速/减速

//游戏暂停

Time.timeScale = 0;  

//影响Time.deltaTime的系数 可以理解为 Time.deltaTime *=Time.timeScale
//注意:物体需要*Time.deltaTime才会暂停

//0.5倍速
Time.timeScale = 0.5;

创建游戏物体

        方法一:

GameObject go = new GameObject(); //括号内可加字符串如“Cube”,则创建一个方块

        方法二:

//根据prefab或场景中的游戏物体创建

public GameObject prefab;
GameObject.Instantiate(prefab);

        方法三:

GameObject.CreatePrimitive(PrimitiveType.Plane);
//该方法可创建U3D中基本形状

为游戏物体添加组件

GameObject go = GameObject.CreatePrimitive(PrimitiveType.Plane);
go.AddComponent<Rigidbody>();
go.AddComponent<API01EventFunction>();    //可以添加自定义脚本

判断游戏物体是否被禁用

xxx.activeInHierachy    //判断场景中的物体是否被禁用,返回bool值
//物体会受到父物体是否被禁用的影响,如果父物体被禁用,则该物体也不显示,此时返回false

xxx.activeSelf    //判断自身是否激活,即使父物体被禁用,如果物体本身未被禁用则返回true

Unity常用类

游戏——>场景——>游戏物体——>组件

一个游戏由多个场景组成

一个场景由多个游戏物体组成

一个游戏物体由多个组件组成

UnityEngine.Object(基类)——>GameObject

                                        ——>Component

UnityEngine.Object

属性

name        返回名称

方法

Destroy();

DontDestroyOnLoad();        将物体从A场景带入B场景时不销毁游戏物体

FindObjectOfType<>();        在游戏场景中找到第一个含有该组件物体下的第一个该组件

Light light = FindObjectOfType<Light>();
light.enabled = false;

FindObjectsOfType<>();        找到游戏场景中的所有该组件并返回一个数组


                
      
;