Unity3D笔记 英保通二
一、访问另一个物体
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; }
作者:PEPE
出处:http://pepe.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述