gpt4 book ai didi

c# - Unity SetActive(true) 一开始设置为 false 后不工作?

转载 作者:太空狗 更新时间:2023-10-30 00:48:49 27 4
gpt4 key购买 nike

Heirarchy structure

using UnityEngine;
using System.Collections;

public class Ball : MonoBehaviour {
private Rigidbody rigidbody;
public Vector3 LaunchVelocity;
private AudioSource audiosource;

// Use this for initialization
void Start ()
{
GameObject.Find("Touch Panel").SetActive(false);
rigidbody = GetComponent<Rigidbody>();
rigidbody.isKinematic = true;
// disable touch control
audiosource = GetComponent<AudioSource>();
}



// Update is called once per frame
void Update()
{
}

public void LaunchBall(Vector3 passedvelocity)
{
rigidbody.velocity = passedvelocity;
}

public void DropBall() // This is attached to a button
{
rigidbody.isKinematic = false;
GameObject.Find("Touch Panel").SetActive(true);

}
}

正如您在上面看到的,我在启动时禁用了“触摸屏”功能。但是在 DropBall 功能(记住它附在一个按钮上)上,我已将它设置为事件但它不起作用。任何人都可以帮助我解决这个问题。谢谢。

编辑:- 这个脚本附在一个“球”上。球附在按钮上。“触摸屏”是 Canvas 的子项。

最佳答案

你的问题是,当你禁用你的Touch Panel 时,GameObject.Find 将找不到它,因此你将无法再次启用它。

From the documentation:

This function only returns active GameObjects.

您需要将您的Touch Panel设置为public GameObject myPanel并在检查器中分配它,然后您可以启用和禁用它。

myPanel.SetActive(false);
myPanel.SetActive(true);

关于c# - Unity SetActive(true) 一开始设置为 false 后不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43236205/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com