SetActive GameObject为true在Unity 5中不起作用

时间:2017-09-11 23:20:00

标签: c# unity3d dialog gameobject

我和团结一致5.我正在创建一个与其他对象交互的对话。当玩家靠近物体时,按回车键进行交互。

启动的面板对话框已禁用setActive(false)。

在方法更新时,当玩家离其他对象很近并按回车键和面板setActive(true),但此面板未启用时,我不知道为什么。请帮助。

...谢谢

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

[RequireComponent(typeof(Text))]
public class Dialogue : MonoBehaviour
{   
	
    private Text _textComponent;

    public string[] DialogueStrings;

    public float SecondsBetweenCharacters = 0.15f;
    public float CharacterRateMultiplier = 0.5f;

    public KeyCode DialogueInput = KeyCode.Return;

    private bool _isStringBeingRevealed = false;
    private bool _isDialoguePlaying = false;
    private bool _isEndOfDialogue = false;

    public GameObject ContinueIcon;
    public GameObject StopIcon;
	public GameObject Panel;


	//Vector3 ThirdPersonController = GameObject.Find("ThirdPersonController").transform.position;
	public GameObject thirdpersoncontroller;



	// Use this for initialization
	void Start ()
	{
	    _textComponent = GetComponent<Text>();
	    _textComponent.text = "";
		Panel.SetActive(false);
        HideIcons();




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


		if (thirdpersoncontroller.transform.position.z > 37.6 && thirdpersoncontroller.transform.position.z < 38.8) {

			if (Input.GetKeyDown (KeyCode.Return)) {

				Panel.SetActive(true);

				if (!_isDialoguePlaying) {
					
					_isDialoguePlaying = true;
					StartCoroutine (StartDialogue ());

		}

	}

2 个答案:

答案 0 :(得分:2)

有四种可能的原因(使用解决方案)

  1. 你的这种情况不正确

    thirdpersoncontroller.transform.position.z&gt; 37.6&amp;&amp; thirdpersoncontroller.transform.position.z&lt; 38.8

  2. 在条件之后记录,如果是,则问题仍然存在,

    1. 检查您的功能(StartDialogue())是否突然停用了面板。 (如果情况并非如此),那么

    2. 是没有让面板停用的任何其他脚本?如果它也不是真的

    3. 然后,最后问题是 Panel是非活动GameObject的子项。您还可以查看SetActive

    4. 的Unity文档
        

      请注意,GameObject可能处于非活动状态,因为父级未处于活动状态。

      注意:这些问题都基于调试(这就是为什么我以调试的方式回答你)我强烈建议你学习调试技巧,以便成为一名成功的程序员。

答案 1 :(得分:0)

2个解决方案:

您是否将此脚本放在UI / GameObject本身中?对我来说有时候它不起作用,因为它会自动禁用,所有脚本都不会起作用(即使你尝试将它设置为活动状态也是如此)

第二个选项: 确保UI元素在画布中,面板是否也是画布?使用UI必须使用.enabled =,而不是SetActive

希望这会有所帮助:)