C# Unity脚本在重新激活其所连接的游戏对象后停止工作
我只想制作一个乒乓球动画,但当它切换UI元素时,脚本停止工作。有什么想法吗?你可能想知道为什么我不使用动画,首先它会是相同的问题,其次我需要其他脚本也附加到停用的对象:SC# Unity脚本在重新激活其所连接的游戏对象后停止工作,c#,unity3d,C#,Unity3d,我只想制作一个乒乓球动画,但当它切换UI元素时,脚本停止工作。有什么想法吗?你可能想知道为什么我不使用动画,首先它会是相同的问题,其次我需要其他脚本也附加到停用的对象:S using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UiFadingPingPong : MonoBehaviour{ bool fadeT
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UiFadingPingPong : MonoBehaviour{
bool fadeTrigger = false;
float currentVal = 0;
public float duration = 10f;
public bool enable = false;
void Start(){
currentVal = 0;
}
void OnEnable(){
enable = true;
}
void OnDisable(){
enable = false;
}
// Update is called once per frame
void Update(){
if(enable){
if(currentVal <= 0){
fadeTrigger = false;
}
if(currentVal >= 1){
fadeTrigger = true;
}
if(fadeTrigger == false){
currentVal += Time.deltaTime / duration;
}else{
currentVal -= Time.deltaTime / duration;
}
Image image = GetComponent<Image>();
var tempColor = image.color;
tempColor.a = currentVal;
image.color = tempColor;
}
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共级别UIFading乒乓球:单一行为{
bool fadeTrigger=假;
float currentVal=0;
公共浮动持续时间=10f;
公共bool enable=false;
void Start(){
currentVal=0;
}
void OnEnable(){
启用=真;
}
void OnDisable(){
启用=错误;
}
//每帧调用一次更新
无效更新(){
如果(启用){
如果(currentVal=1){
fadeTrigger=true;
}
如果(fadeTrigger==false){
currentVal+=Time.deltaTime/持续时间;
}否则{
currentVal-=Time.deltaTime/持续时间;
}
Image=GetComponent();
var tempColor=image.color;
tempColor.a=currentVal;
image.color=tempColor;
}
}
}
感谢您的帮助:)通过禁用此脚本附加到的游戏对象,您也可以禁用脚本 这意味着
Update()
方法将不会运行,也不会解释enable
变量现在被设置为false
,(因为OnDisable()
仍在执行,但之后不会发生进一步的处理)
解决方法是将此脚本附加到一个单独的未启用/禁用的游戏对象上,并可以管理此淡入/淡出效果好的,谢谢您的回复:)我也解释了为什么couroutine aproach也不起作用。我想可能会有一个变通的办法。另一个解决办法就是你提到的使用动画。虽然我不完全理解为什么会出现同样的问题。动画将包括将UI元素的alpha设置为255到0的关键帧。帧之间的距离越远,两种(或更多)状态之间的过渡(或淡入)速度越慢,即不透明或透明。这是相同的问题,因为动画在连接到对象时停止工作。如果不禁用动画制作者连接到的游戏对象,它将按预期工作。如果您正在设置
Time.timeScale
,并且希望动画在Time.timeScale=0时继续
请记住将动画制作者的更新模式
设置为未缩放时间
谢谢您的回复。事实上,我昨天也发现这是由于时间的原因。很抱歉丢失了信息:)是的,时间。我需要的是无刻度的时间。很好。