C# 如何在运行时禁用脚本?

C# 如何在运行时禁用脚本?,c#,unity3d,boolean,C#,Unity3d,Boolean,我有一个问题,那就是gameobject.enabled不起作用,我尝试了所有方法,但都无法解决,如果您能帮助我,我将非常感激。以下是我编写的脚本: 在此之前,非常感谢 代码如下: public class GenerarCartaAleatoria : MonoBehaviour { public GameObject go, padre; string numSprite; int contador = 1; int contadorChild;

我有一个问题,那就是gameobject.enabled不起作用,我尝试了所有方法,但都无法解决,如果您能帮助我,我将非常感激。以下是我编写的脚本:

在此之前,非常感谢

代码如下:

public class GenerarCartaAleatoria : MonoBehaviour
{
    public GameObject go, padre;
    
    string numSprite;
    int contador = 1;
    int contadorChild;
    int contadorOrder = 329;

    public void Generar()
    {
        string numRandom = Random.Range(1,36).ToString();
        int numLenght = numRandom.Length;

        if (numLenght == 1)
        {
            numSprite = "Sprites/000" + numRandom;
        }
        else if(numLenght == 2)
        {
            numSprite = "Sprites/00" + numRandom;
        }
        else if (numLenght == 3)
        {
            numSprite = "Sprites/0" + numRandom;
        }
        else if (numLenght == 4)
        {
            numSprite = "Sprites/" + numRandom;
        }

        GameObject spriteCosa = Instantiate(go);

        spriteCosa.transform.parent = padre.transform;

        GameObject cosasa = transform.GetChild(contadorChild).gameObject;

        cosasa.AddComponent<Image>();

        cosasa.GetComponent<GenerarCartaAleatoria>().enabled = false;

        cosasa.transform.SetSiblingIndex(0);
        
        cosasa.name = contador.ToString();

        cosasa.GetComponent<Image>().sprite = Resources.Load<Sprite>(numSprite);

        cosasa.GetComponent<RectTransform>().localScale = new Vector3(1,1,0);

        cosasa.GetComponent<RectTransform>().localPosition = new Vector3(-171, contadorOrder, 0);

        contador++;
        contadorChild++;
        contadorOrder += 100;
    }
}
我的层次结构:


如果您试图禁用游戏对象,则使用gameObejct.SetActivebool,其中bool为true或false。要关闭它,行应该是yourGameObjectHere.SetActivefalse,或者在您的情况下是cosas.SetActivefalse


不过,我对你问题的措辞有点困惑。您编写的gameObject.enabled不起作用。您的意思是.enabled在您的组件上不起作用吗?当您使用.enable时,它是在组件基础上使用的,因此它将在您正在查找的游戏对象上禁用名为GenerarCartaAleotoria的组件。这是不是.enabled=false不起作用,这是您的问题?

我们无法调试代码的映像。请编辑您的问题,以实际提供文本形式的代码。只是一个旁注。在代码中使用非英语命名被认为是一种不好的做法。这使得其他人更难理解代码的意图。Nikkas,谢谢你的建议不要使用script标签。每个问题都是关于脚本的。这并不比添加代码作为标记好多少。那个标签只是噪音,它在过去被删除过,很快会再次被删除。Teebkne是的,我正在尝试禁用一个组件,很抱歉我写得不好。无需担心,我只是想澄清一下。两个问题:1。你确定你用GetChild抓取了正确的游戏对象吗?二,。当你到达GetComponent行时,是否有空引用的错误?Llama,完成,编辑问题并输入代码。Teebkne,不,没有这些。你能解释一下你想用代码做什么吗?从我所看到的,你随机地从1->35生成一个数字,并将其转换为一个字符串,然后基于该长度,将资源sting引用设置为一个精灵。在此之后,您将实例化一个名为go的预置,并将其父对象设置为padre。然后在contradorChild的子索引处获取对象所在脚本的子级。在此之后,在该对象上设置各种数据,然后递增计数器。我相信您的GetChild使用了错误的对象,这是导致问题的原因。