首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当对象已被设置为“禁用”时,如何设置它是活动的?

当对象已被设置为“禁用”时,如何设置它是活动的?
EN

Stack Overflow用户
提问于 2022-06-25 17:19:50
回答 3查看 139关注 0票数 0

这是我的代码,我尝试启用我已经禁用的gameobject,以便它显示在CollisionEnter上。

代码语言:javascript
运行
复制
using System.Collections.Generic;
using UnityEngine;
public class JumpMessage : MonoBehaviour
{
    private GameObject jumptutorialbox;
    private GameObject triggerjumptut;
    public AudioSource audioPlayer;
    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Player"))
        {
            Debug.Log("Triggered Jump Tutorial");
            triggerjumptut = GameObject.Find("TriggerJumpTut");
            triggerjumptut.gameObject.SetActive(false);
            jumptutorialbox = GameObject.Find("TutorialJUMP");
            jumptutorialbox.gameObject.SetActive(true);
            audioPlayer.Play();
        }
    }
}

我想在CollisionEnter上启用一个禁用的对象,但是我得到了以下错误:

代码语言:javascript
运行
复制
NullReferenceException: Object reference not set to an instance of an object
JumpMessage.OnCollisionEnter (UnityEngine.Collision collision) (at Assets/Scripts/JumpMessage.cs:19)
EN

回答 3

Stack Overflow用户

发布于 2022-06-25 17:25:16

因此,为了将不活动的游戏对象设置为active,您必须通过另一个游戏对象将其设置为active,因为如果场景中的一个对象是非活动的,那么代码和脚本永远不会运行,所以创建另一个脚本并将其放到一个新的游戏对象上,然后创建一个bool或什么的,这就是将其设置为active的方法。

票数 0
EN

Stack Overflow用户

发布于 2022-06-26 07:37:38

您可以使用代码创建一个新的空GameObject,这样您就可以通过代码启用和禁用其他GameObject,而不会出现任何问题。我喜欢用这些代码来调用这个GameObjects,这些代码将其他GameObject的行为称为控制器。

票数 0
EN

Stack Overflow用户

发布于 2022-06-26 08:13:21

检查在使用GameObject.Find时是否找到了一些东西。在此基础上,您可能可以在检查器中使用公共变量并设置对对象的引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72755891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档