目的

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 后执行的更多相关文章

  1. spring boot 配置启动后执行sql, 中文乱码

    spring.datasource.schema指定启动后执行的sql文件位置. 我发现中文乱码,原因是没有指定执行sql script encoding: spring: datasource: u ...

  2. ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作

    ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作 .操作成功后刷新父页面 $this->assign('jumpUrl', "javascript:wi ...

  3. 当spring 容器初始化完成后执行某个方法

    在做web项目开发中,尤其是企业级应用开发的时候,往往会在工程启动的时候做许多的前置检查. 比如检查是否使用了我们组禁止使用的Mysql的group_concat函数,如果使用了项目就不能启动,并指出 ...

  4. ready是先执行的,load后执行,DOM文档的加载步骤

    在jq中在文档载入完毕后有这几种方式去执行指定函数: $(document).ready(function() { // ...代码... }); //document ready 简写 $(func ...

  5. Inno Setup入门(十一)——完成安装后执行某些程序

    Inno Setup入门(十一)——完成安装后执行某些程序 2011-02-16 16:24:23|  分类: Inno Setup |  标签:inno  setup   |举报 |字号 订阅   ...

  6. windows_phone指定时间后执行函数

    开发windows phone 应用程序时需要在一段指定的时间后执行某些函数,于是乎想到了通过DispatcherTimer类来实现,再在.Tick后面添加自己想要的事件 DispatcherTime ...

  7. WebView点击加载的页面中的按钮时不弹出新窗口以及在加载后执行javascript

    mWebView.setWebViewClient(new WebViewClient() { //点击网页中按钮时,在原页面打开 public boolean shouldOverrideUrlLo ...

  8. 设置N秒后执行某个方法或函数

    设置N秒后执行一个函数,最常用的是设置一个定时器,今天刚看到有这样一个函数,感觉还是比较简单实用的,就先记下来,免得忘记了. 5秒后执行pushSecondController这个函数 [self p ...

  9. PageSlider中CSS3动画在除首屏之外先加载页面后执行动画的问题

    PageSlider中CSS3动画在除首屏之外先加载页面后执行动画的问题,PageSlider中加入CSS3动画的话,默认只有首屏是从无到有执行动画,其他屏都是显示下页面再执行动画 这就造成其他屏的动 ...

随机推荐

  1. uestc poj2559 秋实大哥去打工

    //感觉有必要把这题放博客上待复习 刚刚写解题报告的时候发现自己又不会做这题了 //我不会告诉你这题绝对是命题人抄poj2559 这题使用一个单调递增的栈,栈内存储的元素有两个值,一个高度,一个长度. ...

  2. LeeCode-Sort Colors

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  3. ACdream OJ 1153 (k-GCD)

    题目链接: http://115.28.76.232/problem?pid=1153 题意: 从给定的n个数中取出k个数,使得他们的最大公约数最大,求这个最大的公约数 分析: 暴力分解不可取,我们能 ...

  4. HTML高级标签(2)————窗体分帧(2)————后台管理页面

    使用frameset进行窗体分帧.构建简易的后台页面.这篇博客就作为一个简易后台管理页面的实战演练. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3px ...

  5. 【Java基础】构造方法调用构造方法

    从一个程序开始: class dog { private String name; private String color; private int age; dog(String name) // ...

  6. 查看并设置oracle并发连接数

    1.Sql代码1.select count(*) from v$process  select count(*) from v$process --当前的数据库连接数2.Sql代码1.select v ...

  7. 消除多余的row

    tableviewName.tableFooterView = [[UIView alloc]initWithFrame:CGRectZero];

  8. python 基础篇(二)数据类型概述

    正式进入python的学习. 数据类型可以分为身份,类型,数据项三项联合组成. 身份: id() 类型:type() 数据类型:int,boolean,tuple,string,dict,list 1 ...

  9. C++ 多态性浅谈

    多态:一个接口, 多种方法.程序在运行时才决定调用的函数是什么. C++多态通过 虚函数实现, 虚函数允许子类重新定义成员函数, 子类override父类. 多态与非多态的实质区别:函数地址是早绑定还 ...

  10. Linux命令记录。

    引用:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/31/2992500.html 首先,需要确定的是知道的是:对于Linux系统来说 ...