using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class zjl_wupindianji : MonoBehaviour { public GameObject tu1; public GameObject UI; float time = 0.2f; bool isInvoke = false; // Start is called before the first frame update void Start() { //tu1 = GameObject.Find("toushiyanjing"); tu1.SetActive(false); UI.SetActive(false); } // Update is called once per frame void Update() { } void OnMouseDown() { Destroy(this.gameObject); UI.SetActive(true); Invoke("close", 1f); //isInvoke = true; tu1.SetActive(true); } void close() { UI.SetActive(false); } }为啥这段代码的invoke不调用
时间: 2024-02-14 17:33:44 浏览: 87
根据您提供的代码,我没有看到任何明显的问题。您可以尝试在控制台中打印一些调试信息以帮助诊断问题:
1. 确保您在调用Invoke方法之前已经在控制台中打印了一些信息,以确保代码执行到该点。
2. 在调用Invoke方法之后,在控制台中打印一些信息,以确保Invoke方法已经被调用。
如果您仍然无法解决问题,请尝试使用另一种方法来实现您的需求,例如使用coroutine或直接在Update方法中实现需要的逻辑。
相关问题
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class showtime : MonoBehaviour { private Text m_text; void Start() { m_text = GameObject.Find("text_time").GetComponent<Text>(); } void Update() { m_text.text = (System.DateTime.Now).ToString(); } } 请帮我解释一下这段代码
这段代码是用于在Unity引擎中展示当前时间的。具体解释如下:
1. 首先引入了一些命名空间,包括System.Collections、System.Collections.Generic、UnityEngine和UnityEngine.UI。
2. 定义了一个名为"showtime"的类,该类继承了MonoBehaviour类。
3. 定义了一个私有变量m_text,该变量的类型为Text。
4. 在Start()方法中,使用GameObject.Find()方法查找名为"text_time"的游戏对象,并将其Text组件赋值给m_text变量。
5. 在Update()方法中,使用m_text.text属性将当前时间转换为字符串并显示在屏幕上。
该代码的实现需要在场景中添加一个Text组件,并将其命名为"text_time"。然后将该脚本挂载到一个游戏对象上,即可在屏幕上实时显示当前时间。
为什么使用以下脚本以后,被碰到的带有Enemy的物体没有消失: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Attack : MonoBehaviour { void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.CompareTag("Enemy")) { Destroy(collision.gameObject); } } }
这个脚本应该是可以销毁带有 "Enemy" 标签的物体的。但是,有几个潜在的问题可能会导致物体没有被销毁。
首先,你需要确保你的物体上有一个 Collider2D 组件,以便进行碰撞检测。如果你的物体没有 Collider2D 组件,那么 OnCollisionEnter2D() 函数将永远不会被调用,因此物体也不会被销毁。
其次,你需要确保你的物体与敌人物体有足够的接触面积,以便进行碰撞检测。如果你的物体只是轻微地触碰了敌人物体,那么 OnCollisionEnter2D() 函数可能不会被触发。
最后,如果你的敌人物体是通过代码生成的,那么你需要确保它们具有 "Enemy" 标签。你可以在 Unity 的 Inspector 窗口中为物体添加标签,或者使用代码为它们添加标签,例如:
```csharp
gameObject.tag = "Enemy";
```
如果你已经检查了以上所有问题,但是物体仍然没有被销毁,那么你可以在 OnCollisionEnter2D() 函数中添加调试信息,以便查看函数是否被调用了。例如:
```csharp
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Enemy"))
{
Destroy(collision.gameObject);
Debug.Log("Enemy destroyed!");
}
else
{
Debug.Log("Collision detected with non-enemy object!");
}
}
```
这样,你就可以在控制台中查看是否存在碰撞,并且是否正确地销毁了物体。
阅读全文