先说几句废话,

最近在研究Unity,

这玩意用起来比较简单,

而且商店里还有各种插件,

初学者也能轻松拼凑出一个像模像样的游戏(顺便说一句,自己做着玩就无所谓了,但随便拼凑个辣鸡丢出来骗钱就不好了),

是一个不错的游戏开发工具,

不过知不道是不是开发商已经很久没有自己用Unity开发一个完整的游戏了,

这玩意很多细节做得都比较蛋疼,

而又因为是闭源的,

很多本来花不到一分钟时间改一下源码就能解决的问题现在也只能先用蛋疼的方式解决了,

之后计划在此记录下研究过程中发现的各种蛋疼的问题以及个人认为蛋疼程度最低的解决办法,

希望能给此时也正在研究Unity的同学一些帮助。

言归正传,

最近在研究Unity的刷新流程,

官方文档明确指出了不同对象的Update函数调用的顺序是不确定的,

这个没什么问题,不同对象的Update本来也不应该有直接的依赖关系,

但是在相同对象中挂上去的脚本貌似没有找到文档说明调用顺序是怎样的(如果哪位同学找到了麻烦告诉我一下),

然后写了一段代码实验了一下,

发现调用顺序跟脚本挂上去的顺序有关,

跟在面板上的顺序无关,

然后又在论坛上发现有人说这个顺序也是不固定的,

有可能你游戏丢出去给别人玩的时候突然就出问题了,

额,好吧,

不过即使是按这个顺序来执行的,

个人建议也不要依赖这个顺序,

如果哪天新加了个脚本跟之前已经挂上去的脚本有时序上的依赖,

就得把把脚本全部删掉重新再加一次,想想就蛋疼,

由于没有源码,不知道官方出于什么目的要干这种反人类的事情,

个人觉得按脚本在面板上的顺序调用比较符合人类的直觉,

也不存在什么开发难度,几行代码就搞定了,

不过既然现在引擎已经做成这样了,

暂时能想到的一个不那么蛋疼的解决办法是写一个刷新管理类,

在Start的时候把该对象其他需要Update的脚本拿出来,

然后在Update的时候按逻辑顺序调用这些脚本的Upate函数就好了,

当然,这些脚本的Update函数得改个名字,例如ManualUpdate啥的

关于Unity单个对象多个脚本的Update调用的时序问题的更多相关文章

  1. Unity3D热更新之LuaFramework篇[07]--怎么让unity对象绑定Lua脚本

    前言 在上一篇文章 Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的 中,我分析了由LuaBehaviour来实现lua脚本生命周期的方法. 但在实际使用中 ...

  2. Unity学习疑问记录之脚本生命周期

    总的来说unity的脚本生命周期分几个部分:编辑→初始化→游戏逻辑→渲染→GUI→Teardown首先是Reset,顾名思义:重置.在什么情况下调用呢?1.用户第一次添加组件时.2用户点击见组件面板上 ...

  3. 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 在脚本中使用MonoBehaviour

    继上次分析了热更新的Demo后,这次来介绍如何在热更新代码中使用MonoBehaviour. MonoBehaviour挂载到GameObject对象上的脚本的基类.平常Unity开发时,简单的做法就 ...

  4. C#开发Unity游戏教程之使用脚本变量

    C#开发Unity游戏教程之使用脚本变量 使用脚本变量 本章前面说了那么多关于变量的知识,那么在脚本中要如何编写关于变量的代码,有规章可循吗?答案是有的.本节会依次讲解变量的声明.初始化.赋值和运算. ...

  5. Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合

    今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...

  6. Objective-C 【单个对象内存管理(野指针&内存泄露)】

    ------------------------------------------- 单个对象内存管理 (1)野指针 ①定义了一个指针变量,但是并没有赋初值,它随机指向一个东西 ②某指针变量指向的内 ...

  7. Unity NGUI 网络斗地主 -发牌 脚本交互

    Unity NGUI 网络斗地主 -发牌 脚本交互 @By 灰太龙 Unity4.2.1f4 NGUI 3.0.4 本篇说的问题是脚本与控件的交互! 现在对界面进行了改进,先看副图! 1.制作发牌效果 ...

  8. QT自定义对象导入JavaScript脚本使用

    1.对象 项目属性要添加 QT += script自定义的对象头文件如下,实现正常就好,记得脚本里要调用的方法一定要定义在public slots:下,要不然调用时提示该对象没有*方法   #ifnd ...

  9. mybatis 查询单个对象,结果集类型一定要明确

    简单介绍:用ssm框架已经有很长时间了,但是似乎从来都没有对于查询单个对象,存在问题的,好像也就是那回事,写完sql就查出来了,也从来都没有认真的想过,为什么会这样,为什么要设置结果集类型 代码: / ...

随机推荐

  1. 打印sql

    $query=$sql->where([ 'test_id'=>24, 'name'=>'小洋' ]); //打印sql; $query->prepare(Yii::$app- ...

  2. Vue基础之初识Vue

    Vue特点及优点 小巧,压缩后体积17KB: 渐进式,不需要一口吃成大胖子,一上来就用所有的东西,可以一步一步.有阶段的先吃成小胖子: 数据驱动,双向数据绑定,MVVM模式,详见下一段 指令,例如v- ...

  3. Qt学习资料

    网址:http://www.qter.org/portal.php?mod=list&catid=18 qt开源社区 (门户)里面有在线学习资料(讲的比较粗略 但是进程比较快 适用于快速学习) ...

  4. tensorflow模型ckpt转pb以及其遇到的问题

    使用tensorflow训练模型,ckpt作为tensorflow训练生成的模型,可以在tensorflow内部使用.但是如果想要永久保存,最好将其导出成pb的形式. tensorflow已经准备好c ...

  5. JavaScript对象(第四天)

    面向对象编程中,JavaScript并不完全具备封装.继承.多态:在JavaScript中,对象是一个无序的键值对集合 封装JavaScript是具备的,将属性和方法定义到对象内部: 继承,在java ...

  6. tensorflow 代码阅读

    具体实现: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/framework 『深度长文』Tensorflo ...

  7. python的mysql小代码

    我因为懒,就想写个批量insert数据的小代码 这里是代码 # _*_ encoding:utf-8 _*_ import os import MySQLdb import numpy as np d ...

  8. Java(原码、反码、补码和计算机存储格式)

    原码:将一个整数,转换成二进制,就是其原码.如单字节的5的原码为:0000 0101:-5的原码为1000 0101. 反码:正数的反码就是其原码:负数的反码是将原码中,除符号位以外,每一位取反.如单 ...

  9. Java 调用 Shell 命令

    近日项目中有这样一个需求:系统中的外币资金调度完成以后,要将调度信息生成一个Txt文件,然后将这个Txt文件发送到另外一个系统(Kondor)中.生成文件自然使用OutputStreamWirter了 ...

  10. Spring Boot 全局异常处理

    Spring Boot版本 1.5 @ControllerAdvice public class GlobalExceptionHandler extends ResponseEntityExcept ...