一、访问另一个物体

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笔记 英保通二的更多相关文章

  1. Unity3D笔记 英保通一

    一.材质和着色器 1.材质和着色器紧密的联系,其中材质相当于是一个框架,而着色器就是框架中中的内容.在材质框架中可以选择不同的Shader并调节不同的 属性 Material和Physic Mater ...

  2. Unity3D笔记 英保通十 射线碰撞器检测

    射线碰撞检测可以用来检测方向和距离: 通过Physics.RayCast光线投射来实现:常用于射击利用发射的射线来判断.还有对战中刀剑交战中.. 一.要涉及到RayCast和RayCastHit 1. ...

  3. Unity3D笔记 英保通九 创建数

    Unity中创建树:可以直接通过程序自动来创建树木还可以手动创建树木(本质上在我看来就是给程序自动创建的树动动”小手术“) 一.程序自动创建树木 3.1.层次视图中创建:一个平行光.摄像机.地.数并且 ...

  4. Unity3D笔记 英保通八 关节、 布料、粒子系统

    一.关节1.1..链条关节 Hinge joint :他可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力 1.2.. ...

  5. Unity3D笔记 英保通七 物理引擎

    给球体添加刚体RigidBody和球体碰撞器Sphere Collider 效果: OnTriggerEnter() 代码 using UnityEngine; using System.Collec ...

  6. Unity3D笔记 英保通六 角色控制器

    一.角色控制器 U3D有两种角色控制方式:Rigidbody刚体.角色控制器组件(胶囊体组件) 面试的题目中经常会遇到这个问题: CharacterController和Rigidbody的区别? 这 ...

  7. Unity3D笔记 英保通五 鼠标事件与GUI系统双击检测

    一.如何使用GUI事件来检测鼠标是否按下的事件: 获取当前事件:var e:Event=Event.current: using UnityEngine; using System.Collectio ...

  8. Unity3D笔记 英保通四 虚拟轴应用及键盘事件

    Input: 1.使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据.想要读取轴向使用Input.GetAxis方法获取下列默认轴: "Horizontal&q ...

  9. Unity3D笔记 英保通三 脚本编写 、物体间通信

    一.脚本编写 1.1.同一类型的方法JS和C#的书写方式却不一样主要还是语法,在工程中创建一个Cube 分别把JSTest.js和CSharp.cs 添加到Cube中 JSTest.js #pragm ...

随机推荐

  1. 非抢占式RCU实现(二),解释:为什么 RCU_NEXT_SIZE 宏值是4?

    参考:2.6.34 一个很奇怪的问题. 没有查找到为什么 RCU_NEXT_SIZE的值为4的原因(包括Documentation),主要是在rcu_state中定义了一个四级的list,感到很有意思 ...

  2. Dos命令大全(1)

    MS DOS 命令大全 一.基础命令 1 dir 无参数:查看当前所在目录的文件和文件夹. /s:查看当前目录已经其所有子目录的文件和文件夹. /a:查看包括隐含文件的所有文件. /ah:只显示出隐含 ...

  3. 怎么用ABBYY重组PDF文档

    ABBYY PDF Transformer+是一款可创建.编辑以及将PDF文件转换为其他可编辑格式的通用工具,除此之外,还可以使用ABBYY PDF Transformer+重新组织PDF文档,如在文 ...

  4. C++ 保存Excel文件(带密码保护)

    最近有客户需求报表保存为xls的功能,需要保存的文件设置密码保护,特进行尝试! Workbook.SaveAs method (Excel) 参数详情:https://docs.microsoft.c ...

  5. selenium +chrome headless Manual 模式渲染网页

    可以看看这个里面的介绍,写得很好.https://duo.com/blog/driving-headless-chrome-with-python from selenium import webdr ...

  6. MTK 精简ROM

    PhaseBeam.apk--------------------------------------动态壁纸光之韵律(可删) Phone.apk--------------------------- ...

  7. iOS开发 frame 与 bounds 的区别与关系 转自隔叶黄莺

    frame和bounds是UIView中的两个属性(property). frame指的是:该view在父view坐标系统中的位置和大小.(参照点是父亲的坐标系统) bounds指的是:该view在本 ...

  8. NetBpm 配置篇(2)

    转载注明出处:http://www.cnblogs.com/anbylau2130/p/3877353.html 上一篇中介绍了Netbpm在IIS和CassiniWebServer服务器的安装 通过 ...

  9. Git Step by Step – (6) Git远程仓库

    前面文章中出现的所有Git操作都是基于本地仓库的,但是日常工作中需要多人合作,不可能一直都在自己的代码仓库工作.所以,这里我们就开始介绍Git远程仓库. 在Git系统中,用户可以通过push/pull ...

  10. 架设SVN服务器

    服务器端:windows 2003 + subversion 下载地址:http://subversion.tigris.org/servlets/ProjectDocumentList?folder ...