1.实例控制cube的移动
public Transform cube;
void Start()
{
}
void Update()
{
cube.Translate(Vector3.forward);
}
注:(1秒运行的是50帧)该方法让cube直接向前移动,但是cube运行很快,瞬间就会消失在视野中,因为1秒运行50帧,所以运行单位是1秒运行50m,所以按照常理来分析,改为1秒运行1m,可以使物体平滑的运行。
修改后①:
void Update(){
cube.Translate(Vector3.forward/50f);
}
注:修改以后,运行会平滑。
①但是这种处理方式不是很好,因为如果物体运行每秒的次数变了,那每次都需
要从Update函数中修改,者会变得很繁琐,所以从视频中,我学到了要会灵活应用C#的语言,达到方便,简洁的模式,也就是说效果最大化。
②Update函数,帧数是不稳定的,应该要让它随着时间间隔进行变化,到达这一帧运行多长时间,就运行多远的效果,这样更加符合物理规律。
修改后②:
void Update(){
cube.Translate(Vector3.forward*Time.deltaTime);
}
注:函数修改以后,速度*时间,得到当前帧所要运行的距离,然后通过移动,就可以了。但是这样的做法和之前的方法效果是一样的。
修改后③:
void Update(){
cube.Translate(Vector3.forwardTime.deltaTime3);
Time.timeScale = 1;
}
注:然后在进行测试,后面*3的意思就是,原来为1秒运动1米,现在就成了1秒运动3米,当后面加上Time.timeScale = 1;运行是正常的,可是当Time.timeScale = 0;运行时,会发现物体不会在动了,因为每一次得到的Time.deltaTime都会乘以Time.timeScale,所以Time.timeScale可以控制运动的停止,或者对物体进行统一加速,还是减速。当Time.timeScale = 3f;,物体会加速前进。
利用加法和乘法通过比较来测试占用性能
void Method1()
{
int i = 1+2;
}
void Method2()
{
int j = 1*2;
}
注:因为计算机执行很快,所以基数太小,根本看不出来性能的变化,此时以小化大,无限放大算法性能的时候,可能才会看到变化,所以现在将它转化为运行10W词,来观测性能变化。
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);
}
void Method1()
{
int i = 1+2;
}
void Method2()
{
int j = 1*2;
}
注:Start函数中所执行的次数是1次,经过测试,表明乘法性能比加法性能要差一点,所以Time.realtimeSinceStartup可以用来做性能测试。
在测试中,再加入一次对照组
public int runCount = 10000;
void Start(){
float time00 = Time.realtimeSinceStartup;
for(int i = 0;i < runCount;i++) {
Method0();
}
float time0 = Time.realtimeSinceStartup;
Debug.Log(time0 -time00);
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); }
void Method0() {
}
void Method1()
{
int i = 1+2;
}
void Method2()
{
int j = 1*2;
}
注:正常情况下,三种运行测试运算,空1,加法2,乘法3.但是这种只是通常情况下会发生,有时候也会发生另外的情况,也就是排序的问题。