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 ...
随机推荐
- 绝对定位多个字居中显示的css
在工作中遇到一种情况,例如把一个div元素绝对定位到一个位置,但是该元素中的文字个数不确定,还要保证始终该文字是居中显示,则可以定义两个div,外层div绝对定位并加一个宽度,内层div居中 .box ...
- level1 - unit 1 - 句子结构
preface 学习英语做为一种爱好,就是希望有一天能够和老外流畅沟通,目前来看,日常沟通还是没有问题的和我的外教. 知识日积月累,现在就把以前学习的(从初中到现在)知识总结下.每天一更,更到单元总结 ...
- winform下通过webclient使用非流方式上传(post)数据和文件
这两天因为工作的需要,需要做一个winform上传数据到服务器端的程序.当时第一个想法是通过webservice的方式来实现,后来觉得麻 烦,想偷懒就没有用这样的方式,http的post方式变成了第一 ...
- Two FIFOs of length 253 with 8-bits
FIFO 先入先出队列(First Input First Output,FIFO) 可以实现数据缓存. 一.FIFO的一些重要参数: 1.length:未知,待查 //补充:学长说:“FIFO一般只 ...
- PyCharm搭建pyqt5开发环境
PyCharm搭建PyQt5开发环境 1.安装PyQt5 2.PyCharm环境配置 2.1 添加QtDesigner 2.2 添加PyUIC 2.3 添加Pyrcc 2.4 添加assistant ...
- RESTEasy maven使用
添加依赖: <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteas ...
- python 有class外壳不一定是oop,到底怎么oo?
1.继承 封装 多态是面向对象的三大特点,当年在考c++期末考试时候这三个特点还是作为填空题出现的. 而且老师也反复唠叨继承封装 多态,这三个词语是背得滚瓜烂熟了,但因为不是特别专业的计算机科班,学得 ...
- AppStore应用转让流程
可能大家都有这样的情况,给公司客户开发一个ios app的前期阶段是先发布在自己公司的开发者账户上面的,而不是直接发布在客户的开发者账号上面,这个到后期的话就有一个转让的事情,俗称“过户”. 步骤如下 ...
- 5 -- Hibernate的基本用法 --4 6 Hibernate事务属性
事务也是Hibernate持久层访问的重要方面,Hibernate不仅提供了局部事务支持,也允许使用容器管理的全局事务. Hibernate关于事务管理的属性: ⊙ hibernate.transac ...
- 笔记--Wcf全面解析(上)---(1)
using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using ...