一、访问另一个物体
1、代码中定义一个public的物体 例如:var target:Transform; 在面板上直接拖拽一个物体赋值给target
2、通过GameObject.Find("物体名称")
3、通过Tag 代码:GameObject.FindWithTag("tag");
二、Time用法
2.1 Time.deltaTime 以秒计算,完成最后一帧的时间(只读)。
2.1.1、transform.Rotate(0,5*Time.deltaTime,0 )每秒5度旋转不是每度5秒
2.12、点灯光照射范围以恒定速度发生改变
改变灯光的照射范围:light.range+=2.0*Time.deltaTime;灯光的照射范围会以一个固定的速率增加。
2.2 Time.captureFramerate 捕获帧速率 ['kæptʃə(r)] vt. 俘获;夺取;夺得
如果captureFramerate设置比0大的值,时间会在每帧 (1.0 / captureFramerate) 前进,不考虑真实时间。如果你想捕获一个视频,你需要一个固定的帧速率,这个是很有用的。捕捉帧率或者说限定帧率,电视帧率是30,电影是24每秒,为了某些原因比如模拟电影效果或者其他原因,用这个设定每秒钟的帧速
2.3 Time.fixedDeltaTime 固定增量时间
以秒计间隔,在物理和其他固定帧速率进行更新(像MonoBehaviour的FixedUpdate)。为读取增量时间建议使用Time.deltaTime,因为如果你是在FixedUpdate函数或Update函数里,它自动返回正确的增量时间。
2.4 Time.fixedTime 固定时间
最近的FixedUpdate已开始的时间(只读)。这是以秒计自游戏开始的时间。固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。
2.5 Time.frameCount 帧数:已经传递的帧的总数(只读)。
2.6 Time.maximumDeltaTime 最大增量时间一帧能获得的最大时间。物理和其他固定帧速率更新(像FixedUpdate)。使用这个函数避免低帧速率峰值发生由于垃圾收集器和昂贵的物理或其它固定帧速率更新。这最好是帧保持最大时间在1秒的十分之一和三分之一之间。
2.7 Time.realtimeSinceStartup 自游戏开始实时时间以秒计,自游戏开始的实时时间(只读)。在几乎所有情况下,你应该使用Time.time代替。
2.8 Time.smoothDeltaTime 平滑增量时间:一个平滑淡出Time.deltaTime(只读)。
2.9 Time.timeScale 时间缩放传递时间的缩放。这可以用于减慢运动效果。
2.10 Time.timeSinceLevelLoad 自加载关卡时间:此帧开始的时间(只读)。这是以秒计算到最后的关卡已经加载完的时间。也就是说,从最后加载的关卡到现在所用的时间。
2.11 Time.time 时间:此帧开始的时间(只读)。这是以秒计算到游戏开始的时间。也就是说,从游戏开始到到现在所用的时间。
三、Yield语句
3.1、Yield语句是一种特殊类型的Return语句,它可以确保函数在下一次被执行,不是从头开始,而是从Yield语句处开始
eg:延迟程序执行 yield WaitForSeconds(5.0)
3.2、yield后面类似于一个条件判断,当条件满足时,就会再次回调包含该yield的子函数,并且从yield语句之后继续执行
#pragma strict function Start () {
print("1");
YieldDo();
print("2");
} function Update () { } function YieldDo()
{
print("Hello 3");
yield WaitForSeconds(2.0);
print("Hello 4");
}
输出的是什么?1-3-4-2?还是1-2-3-4 还是1-3-4-2 都不是 答案看下面
注意你不能在Update或FixedUpdate函数内使用yield,但是你能使用 StartCoroutine 开始一个函数.
四、随机数Random
4.1、Random.Value 范围0-1 包含0和1;
注意:
Random.Range(min,max)
int 包含最小min但不会包括最大值max
float浮点数 则可以包含最小min值也可以包含最大值max
4.2、NPC的随机反应
常用于NPC(NPC是英文“非玩家角色”的缩写。英文一般指Non-Player Character,有时也作non-person character,或者non-playable character,泛指一切游戏中不受玩家控制的角色。在电子游戏中,NPC一般由计算机的人工智能控制,而在卡牌或者桌面游戏中,NPC则由城主(DM)或裁判控制。)
50%的机率友好的致敬
25%的机率转身走开
20%的机率立即开始攻击
5%的机率赠送礼物
#pragma strict
var proArray:float[];
private var proValue:int;
function Start () { } function Update () { } function OnGUI()
{
if(GUI.Button(Rect(10,70,50,30),"Click"))
{
proValue=Choose(proArray);
switch(proValue)
{
case 0:
Debug.Log("NPC向我敬礼了");
break;
case 1:
Debug.Log("NPC离开了");
break;
case 2:
Debug.Log("NPC打我了");
break;
case 3:
Debug.Log("NPC给我钱了");
break;
default:
Debug.Log("我么有碰到NPC");
}
}
} function Choose(probs:float[])
{
var total=0.0;
for(elem in probs)
{
total+=elem;
}
var randomPoint=Random.value*total;
var i:int;
for(i=0;i<probs.Length;i++)
{
if(randomPoint<probs[i])
{
return i;
}
else
{
randomPoint-=probs[i];
}
}
return probs.Length -1;
}