【发布时间】:2017-09-11 23:20:00
【问题描述】:
好吧,我与 unity 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 ());
}
}
【问题讨论】:
-
它没有显示,因为
if (thirdpersoncontroller.transform.position.z > 37.6 && thirdpersoncontroller.transform.position.z < 38.8)可能是假的。如果为假,if (Input.GetKeyDown (KeyCode.Return)) {将无法执行,因此Panel.SetActive(true);将不会被执行。我建议你使用Debug.Log来验证我刚才所说的。 -
验证有效,这是真的……这没有问题。问题是当我尝试 setactive(true) 时。
标签: c# unity3d gameobject