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;
}
Unity3D笔记 英保通二的更多相关文章
- Unity3D笔记 英保通一
一.材质和着色器 1.材质和着色器紧密的联系,其中材质相当于是一个框架,而着色器就是框架中中的内容.在材质框架中可以选择不同的Shader并调节不同的 属性 Material和Physic Mater ...
- Unity3D笔记 英保通十 射线碰撞器检测
射线碰撞检测可以用来检测方向和距离: 通过Physics.RayCast光线投射来实现:常用于射击利用发射的射线来判断.还有对战中刀剑交战中.. 一.要涉及到RayCast和RayCastHit 1. ...
- Unity3D笔记 英保通九 创建数
Unity中创建树:可以直接通过程序自动来创建树木还可以手动创建树木(本质上在我看来就是给程序自动创建的树动动”小手术“) 一.程序自动创建树木 3.1.层次视图中创建:一个平行光.摄像机.地.数并且 ...
- Unity3D笔记 英保通八 关节、 布料、粒子系统
一.关节1.1..链条关节 Hinge joint :他可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力 1.2.. ...
- Unity3D笔记 英保通七 物理引擎
给球体添加刚体RigidBody和球体碰撞器Sphere Collider 效果: OnTriggerEnter() 代码 using UnityEngine; using System.Collec ...
- Unity3D笔记 英保通六 角色控制器
一.角色控制器 U3D有两种角色控制方式:Rigidbody刚体.角色控制器组件(胶囊体组件) 面试的题目中经常会遇到这个问题: CharacterController和Rigidbody的区别? 这 ...
- Unity3D笔记 英保通五 鼠标事件与GUI系统双击检测
一.如何使用GUI事件来检测鼠标是否按下的事件: 获取当前事件:var e:Event=Event.current: using UnityEngine; using System.Collectio ...
- Unity3D笔记 英保通四 虚拟轴应用及键盘事件
Input: 1.使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据.想要读取轴向使用Input.GetAxis方法获取下列默认轴: "Horizontal&q ...
- Unity3D笔记 英保通三 脚本编写 、物体间通信
一.脚本编写 1.1.同一类型的方法JS和C#的书写方式却不一样主要还是语法,在工程中创建一个Cube 分别把JSTest.js和CSharp.cs 添加到Cube中 JSTest.js #pragm ...
随机推荐
- 【Postgresql】set up
https://www.howtoforge.com/tutorial/ubuntu-postgresql-installation/ https://linux.cn/article-6770-1. ...
- 用Fiddler查看 Android/iOS 网络请求
1.下载fiddler,尽量到官方网站找最新的版本 我这里也放了一个:http://files.cnblogs.com/xiaokang088/fiddler4setup.zip 2. 打开Fiddl ...
- Java时间日期字符串格式转换大全
import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 ...
- Go工具和调试详解
https://blog.csdn.net/happyanger6/article/details/78724594/ https://blog.csdn.net/u012210379/article ...
- node.js模块依赖及版本号
摘要: Node.js最重要的一个文件就是package.json,其中的配置参数决定了功能.例如下面就是一个例子 { "name": "test", &quo ...
- [OpenCV] IplImage and Operation
IplImage 一.资源 In this chapter, APIs will make U crazy. Good luck! Next, Review Linear Algebra. Ref: ...
- 【一步步学OpenGL 21】 -《聚光灯光源》
教程 21 聚光灯光源 原文: http://ogldev.atspace.co.uk/www/tutorial21/tutorial21.html CSDN完整版专栏: http://blog.cs ...
- 开源一个简易轻量的reactor网络框架
github https://github.com/sea-boat/net-reactor net-reactor it's a simple and easy net framework with ...
- ios开发之-- 延迟执行方法
延迟执行的几种方法,分享一下. 1.performSelector(NSObject)方法 2.NSTimer方法 3.GCD方法 4.sleep(NSThread)方法 1.performSe ...
- MyBatis入门程序之整合Spring
1.引入相关jar包(版本对应关系3.3.1版本的mybatis和1.1.1的spring-mybatis匹配,3.4.1版本的mybatis和1.3.1的spring-mybatis匹配) 如果不对 ...