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四个人物都还原到初始旋转就可以了(记住这个还原所有人物旋转的函数只在切换角色时调用)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-19
Unity生命周期函数里有的
在Awake()之后
OnEnable() 每次脚本被激活时调用一次

在Start() 之前
第2个回答  推荐于2018-03-26
很简单,有个方法名叫OnEnable(),建议你看看追问

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

追答

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

本回答被提问者采纳