Unity Update 具体解释
0x01:简单介绍
Unity的脚本继承了Monobehaviour类,在脚本中定义函数:
void FixedUpdate(){}
void Update(){}
void LateUpdate(){}
脚本假设是激活的,这三个函数会被上层逻辑每帧调用,FixedUpdate调用的次数和fixedTime有关。后面具体介绍,Update和LateUpdate每帧调用一次。
0x02:实现
一般游戏流程都相似以下代码演示样例:
/*****************************************
* Notice:c++ 演示样例代码,用于说明游戏循环逻辑
* Author:wulongfei
* Email:zgwulongefei@gmail.com
* Date:2016-2-10
*****************************************/
#include <iostream>
void FixedUpdate(){}
void Update(){}
void LateUpdate(){}
int main(){
while(true){
FixedUpdate();
Update();
LateUpdate();
}
}
简单说明一下:
1、while每循环一次。相应游戏里一帧
2、Unity里的三个Update调用的次序是依照上面代码所看到的的次序
3、Update和LateUpdate每帧调用一次,FixedUpdate和FixedTime相关联
以下代码说明FixedTime和FixedUpdate是怎样关联的:
/*****************************************
* Notice:c++11 演示样例代码,用于说明游戏循环逻辑
* Author:wulongfei
* Email:zgwulongefei@gmail.com
* Date:2016-2-10
*****************************************/
#include <iostream>
#include <ctime>
#include <chrono>
#include <thread>
static const long kMilliSecondsPerFrame = 1000;
static const float kFixedTime = 0.2f;
void FixedUpdate(){
std::cout<< "FixedUpdate\n";
}
void Update(){
std::cout<< "Update\n";
}
void LateUpdate(){
std::cout<< "LateUpdate\n";
}
int main(){
clock_t t = clock();
while(true){
float detTime = (clock() - t)/(float)CLOCKS_PER_SEC + kMilliSecondsPerFrame/1000;
t = clock();
int count = detTime/kFixedTime;
for(int i = 0; i < count; ++i){
FixedUpdate();
}
Update();
LateUpdate();
std::this_thread::sleep_for(std::chrono::milliseconds(kMilliSecondsPerFrame));
}
}
上面代码用到了C++11的sleep_for和chrono类,事实上主要就是实现程序休眠一段时间。主要理解FixedUpdate的逻辑就可以,FixedUpdate依据每帧须要的时间来和自己的FixedTime去比較,所以FixedUpdate每一帧调用几次取决于程序一帧运行的时间以及FixedTime。
0x03:应用
为啥要有三个Update?
Update:
每帧须要更新的逻辑在Update函数里调用
LateUpdate:
是当Update调用结束。而且渲染逻辑调用完,才会调用LateUpdate。所以当渲染结束后,须要更新状态的逻辑能够放到LateUpdate。
FixedUpdate:
精确计时须要用到FixedUpdate,由于FixedTime是定值,不管每一帧调用花费多少时间。到FixedUpdate调用时都会依照FixedTime来决定调用次数。由于程序每一帧渲染的时间是不能确定的。
这次我们项目中须要做战斗录像。为了保证逻辑都是依照精确时间调用,全部和时间相关的实例须要总的FixedUpdate调用过来。
当然假设是和物理相关,或者做相似保证依照相应的次数和时间调用,FixedUpdate是最合适只是的。
Unity Update 具体解释的更多相关文章
- unity update优化
http://forum.china.unity3d.com/thread-13968-1-1.html Unity有个消息系统,它可以在运行中当发生指定事件时调用你在脚本中定义的那些魔术方法.这是个 ...
- unity update 和fixedudpate
但是Update会在每次渲 染新的一帧时被调用. 而FixedUpdate会在每个固定的时间间隔被调用,
- unity update与fixedUpdate
update与渲染同步.fixedUpdate与物理同步. 在update中,speed要乘以Time.deltaTime.在fixedUpdate中,speed要乘以Time.fixedDeltaT ...
- 如何有效提升Unity Gear VR游戏性能
http://www.vr186.com/vr_news/vr_technical_area/1093.html 好的,所以你决定用 Unity 来做一个 VR 游戏,并选定了三星 Gear vr 为 ...
- Unity安卓共享纹理
前置知识:安卓集成Unity开发示例 本文的目的是实现以下的流程: Android/iOS native app 操作摄像头 -> 获取视频流数据 -> 人脸检测或美颜 -> 传输给 ...
- Stealth——01场景的基本搭建以及基础逻辑
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- CacheManager:–个通用缓存接口抽象类库
CacheManager是–个缓存通用接口抽象类库,它支持各种高速缓存提供者,例如Memcache,Redis,并且有许多先进的功能特性.具体可以访问官方网站 http://cachemanager ...
- 解决:dpkg:处理 xxx (--configure)或E: Sub-process /usr/bin/dpkg returned an error code (1)
问题重现: 问题解决办法: #先备份原来的,然后重新新建 sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bak //现将info文件夹更名 sudo mk ...
- 2、SIP
1.初学者笔记:http://www.cnblogs.com/gnuhpc/archive/2012/01/16/2323637.html 2.SIP头字段解释:http://www.cnblogs. ...
随机推荐
- 关于linux下的.a文件与 .so 文件
连续几天终于将一个又一个问题解决了,这里说其中一个问题 描述问题:使用多线程pthread的时候,(我用的IDE,CODEBOLCKS)编译后发现直接弹出窗口,程序还没有被Build..巴拉巴拉,然后 ...
- MVC系列学习(九)-DTO的使用
本次学习用的数据库,如下 1.什么是DTO:DataTransferObject 即数据传输对象,服务端的客户端的通信,自动定义个小的实体类,里面只包含我们需要传输的属性 2.不用DTO会有什么问题 ...
- 将npm修改为cnpm
1.更改npm的源地址 检测是否更改成功 2.用cnpm代替npm npm常用命令: npm更新:npm install -g npm npm初始化生成package.json: npm init ...
- [Windows Server 2012] Apache+PHP安全设置
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:Win20 ...
- [Windows Server 2003] 网页Gzip压缩
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:启用网站GZI ...
- 数据结构应用实例#栈&单链表#简易计算器
修改BUG的时候一不小心BUG越修越多,鉴于维护程序并不是学习数据结构的初衷,我已经果断的弃坑了!! 以下内容再不更新,Github上的代码直接无法正常编译运行.... 参考参考就好,学习到栈的作用就 ...
- 2016.01.07 DOM笔记(二) DOM节点
node节点属性 nodeName属性 oneBox= document.getElementsById('box');var s = oneBox.nodeName; //nodeName与tag ...
- php base64互转pdf
/* * base64转pdf */ function base642pdf($formTxt,$toPdf) { $file = file_get_contents($formTxt);//读 $d ...
- Optimizing web servers for high throughput and low latency
转自:https://blogs.dropbox.com/tech/2017/09/optimizing-web-servers-for-high-throughput-and-low-latency ...
- office 2016最新安装及激活教程(KMS)【亲测有效】!!
前言 博主的一个朋友,咳咳--你们懂得,想装office,于是我就上网找了一下激活的方法,亲测有效,而且也没有什么广告病毒之类的,还比较方便,所以传上来方便大家.好了,进入正题: 安装office 首 ...