Unity update里物体每次被激活时,执行一次代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity update里物体每次被激活时,执行一次代码相关的知识,希望对你有一定的参考价值。

void Update ()

if (transform.parent.gameObject.activeSelf && once) //人物复位 once是一个bool,初值为true
transform.eulerAngles = new Vector3(0, 180, 0);
once = false;
//我这个逻辑是不对的,我想每次物体的activeSelf为true时,都执行一次代码,并且只执行一次,


if (Input.GetMouseButton(1)) //控制人物旋转
transform.Rotate(Vector3.up * speed, -Input.GetAxis("Mouse X"));



代码如上:
1概要是:我在做一个人物选择界面,4个人物,选A时,BCD隐藏,按右键可以旋转,
2问题是:当我旋转A后,再去选择其他的,,,当返回A时,A还是停留在原来旋转那个位子(比如转到背面,再回来时,它就是背对我),
3要求是:无论A被转到什么角度,返回时(再次被激活时),都会回到一个默认角度(比如(0,0,0))

你可以在代码里定义四个gameobject专门拿来存好ABCD四个人,再定义四个变量专门拿来存好每个人的初始旋转(方便后面还原);
当你选了A并且旋转了之后,再去选择其他的同时,执行一个函数,在那个函数里把ABCD四个人物都还原到初始旋转就可以了(记住这个还原所有人物旋转的函数只在切换角色时调用)。
参考技术A Unity生命周期函数里有的
在Awake()之后
OnEnable() 每次脚本被激活时调用一次

在Start() 之前
参考技术B 很简单,有个方法名叫OnEnable(),建议你看看追问

OnEnable()的话~~在Update里还是。。。。算了,我用itween做了~~

追答

不不不 是与update同级的一个函数,你去查一查 很方便的

本回答被提问者采纳

Unity脚本生命周期

1.Awake

只会被调用一次,在Start方法之前被调用。

2.OnEnable

脚本激活时候被调用,当脚本禁用后重新激活会再次调用。(挂载该脚本的游戏对象,隐藏后再次显示会调用

3.Start

只执行一次,在Awake方法执行结束后执行,但在Update方法执行前执行, 主要用于程序UI的初始化操作,比如获取游戏对象或者组件。

4.FixedUpdate

固定频率刷新,默认0.02s执行一次,1秒执行50次。(刷新频率可在Edit--->Project Settings--->Time面板中的Fixed Timestep中更改

5.Update

一帧执行一次,会受到游戏流畅度的影响,如果游戏流畅执行的频率就高,如果游戏卡顿执行的频率就低。

6.LateUpdate

Update方法执行完,必定接着执行LateUpdate。

7.OnGUI

在这里面进行GUI的绘制,且GUI是每帧擦除重绘的!仅仅只是绘制!没有生命周期的概念!所有关于绘制GUI的代码,都要直接或者间接地写到OnGUI方法中!

8.OnDisable

脚本禁用时候被调用,当脚本激活后重新禁用会再次调用。

9.OnDestroy

当前脚本销毁时调用

以上是关于Unity update里物体每次被激活时,执行一次代码的主要内容,如果未能解决你的问题,请参考以下文章

Unity 静态类执行Update()

unity中常用脚本生命周期全解

Unity 重要基础知识点

Unity 3D 基础知识方法

unity游戏物体隐藏了协程会如何

Unity脚本生命周期