Unity 之 AfterFixedUpdate,在所有 GameObject FixedUpdate 后执行
目的
FixedUpdate 在不同的 GameObject 互相之间是没有执行顺序的,我们并不能知道哪个 GameObject 先执行 FixedUpdate。
但是,有的时候我们仍然希望某个 GameObject 在其他所有 GameObject 执行 FixedUpdate 之后能执行一个指定的函数。
思路
(图1)
观察上图 Unity 生命周期(片段)中 Physics 部分。FixedUpdate 后,执行了 yield WaitForFixedUpdate,然后进行物理更新。
我们发现,可以尝试用协程实现。
实现 AfterFixedUpdate
1、创建一个 C# 脚本,命名为 TryAfterFixedUpdate,代码如下
using UnityEngine;
using System.Collections; public class TryAfterFixedUpdate : MonoBehaviour
{
[SerializeField]
string text; int a = ; void FixedUpdate ()
{
a++;
Debug.Log (string.Format ("FixedUpdate {0} {1}", a, text));
StartCoroutine (AfterFixedUpdate ());
} IEnumerator AfterFixedUpdate ()
{
Debug.Log (string.Format ("AfterFixedUpdate {0} {1}", a, text));
yield return new WaitForFixedUpdate ();
Debug.Log (string.Format ("AfterYield {0} {1}", a, text));
} }
2、创建两个空的 GameObject,分别命名为 A B
3、将 TryAfterFixedUpdate 脚本分别拖放到 A 和 B 上,并设置 text 分别为 "a" 和 "b"
(图2)
4、执行脚本,我们得到了如下结果。可见,成功实现了我们的目的
(图3)
Unity 之 AfterFixedUpdate,在所有 GameObject FixedUpdate 后执行的更多相关文章
- spring boot 配置启动后执行sql, 中文乱码
spring.datasource.schema指定启动后执行的sql文件位置. 我发现中文乱码,原因是没有指定执行sql script encoding: spring: datasource: u ...
- ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作
ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作 .操作成功后刷新父页面 $this->assign('jumpUrl', "javascript:wi ...
- 当spring 容器初始化完成后执行某个方法
在做web项目开发中,尤其是企业级应用开发的时候,往往会在工程启动的时候做许多的前置检查. 比如检查是否使用了我们组禁止使用的Mysql的group_concat函数,如果使用了项目就不能启动,并指出 ...
- ready是先执行的,load后执行,DOM文档的加载步骤
在jq中在文档载入完毕后有这几种方式去执行指定函数: $(document).ready(function() { // ...代码... }); //document ready 简写 $(func ...
- Inno Setup入门(十一)——完成安装后执行某些程序
Inno Setup入门(十一)——完成安装后执行某些程序 2011-02-16 16:24:23| 分类: Inno Setup | 标签:inno setup |举报 |字号 订阅 ...
- windows_phone指定时间后执行函数
开发windows phone 应用程序时需要在一段指定的时间后执行某些函数,于是乎想到了通过DispatcherTimer类来实现,再在.Tick后面添加自己想要的事件 DispatcherTime ...
- WebView点击加载的页面中的按钮时不弹出新窗口以及在加载后执行javascript
mWebView.setWebViewClient(new WebViewClient() { //点击网页中按钮时,在原页面打开 public boolean shouldOverrideUrlLo ...
- 设置N秒后执行某个方法或函数
设置N秒后执行一个函数,最常用的是设置一个定时器,今天刚看到有这样一个函数,感觉还是比较简单实用的,就先记下来,免得忘记了. 5秒后执行pushSecondController这个函数 [self p ...
- PageSlider中CSS3动画在除首屏之外先加载页面后执行动画的问题
PageSlider中CSS3动画在除首屏之外先加载页面后执行动画的问题,PageSlider中加入CSS3动画的话,默认只有首屏是从无到有执行动画,其他屏都是显示下页面再执行动画 这就造成其他屏的动 ...
随机推荐
- 如何把apache和nginx 加入到系统服务,用service 命令来控制启动、停止
1 把apache 加入到系统服务,即用service 命令来控制Apache 启动.停止 如果Linux服务器上默认安装了httpd的话(用rpm -qa|grep httpd查看),那你就可以用 ...
- 微软GitHub组织
微软aspnet团队的GitHub 微软dotnet团队的GitHub 微软的GitHub 微软云团队的GitHub 微软在GitHub的开源底部有其它组织
- |,&,<<,>>运算符
<< 位移运算符(>>相反了) /* * 题目: 2 << 3 = 10000 = 16 * 解答: 2向左移动三位,就变成了10000 * 十进制 二进制 * 2 ...
- February 29(模拟)
D - D Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit Status P ...
- Android日语输入法Simeji使用示例
MainActivity如下: package cn.testsimeji; import android.os.Bundle; import android.view.View; import an ...
- 创建httpd启动脚本并加入启动列表开机启动
第一步: cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd 第二步: vim /etc/init.d/httpd 在第一行#!/bin/s ...
- java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast ...
- 几个因为hadoop配置文件不当造成的错误
192.168.1.20: Exception in thread "main" java.lang.IllegalArgumentException 192.168.1.20: ...
- MysqlDataSource里的Connection实现类实现了isValid(int timeout)方法
在项目中,需要连接mysql数据库的时候,我们最好选择使用数据库连接池,即需要选择DataSource. 而在使用c3p0的ComboPooledDataSource时,发现它的Connection实 ...
- 【搜索引擎Jediael开发笔记】v0.1完整代码
详细代码请见 E:\Project\[重要]归档代码\SearchEngine归档代码 或 https://code.csdn.net/jediael_lu/jediael/tree/10991c83 ...