Есть простой скрипт монолога пресонажа, привестсвие в котром должно показываться только один раз, пробоавал ничего не выходит:
using UnityEngine;
using System.Collections;
public class Quests : MonoBehaviour {
private bool activedialog = true;
public string text = "";
private int show = 1;
private bool newQuest = false;
public string questText;
public GUISkin skin;
void Start()
{
text = "Приветствую тебя на острове белезней. Как видно, остров очень красив, но не отвлекайся от своей цели, заглядываясь на красоту острова...\n Тебе надо помочь жителям острова излечиться от чумы, которая убивает все больше и больше людей. Для начала собирай растения, которые увидешь, а потом приноси их жителям, чтобы они варили себе отвар, но не забывай, что люди могут умереть от того, что ты не успел... Enter - подолжить";
}
void Update()
{
if(activedialog == true)
{
transform.GetComponent<CharacterMotor>().enabled = false;
transform.GetComponent<MouseLook>().enabled = false;
GameObject.FindGameObjectWithTag("MainCamera").GetComponent<MouseLook>().enabled = false;
}
if(activedialog == false)
{
transform.GetComponent<CharacterMotor>().enabled = true;
transform.GetComponent<MouseLook>().enabled = true;
GameObject.FindGameObjectWithTag("MainCamera").GetComponent<MouseLook>().enabled = true;
}
if(Input.GetKeyDown(KeyCode.Return) && show == 1) show = 2;
else {
if(Input.GetKeyDown(KeyCode.Return) && show == 2)
{
show = 0;
text = "";
activedialog = false;
}
if(Input.GetKeyDown(KeyCode.Return) && show == 3)
{
show = 0;
text = "";
activedialog = false;
newQuest = true;
}
}
}
void OnGUI()
{
GUI.skin = skin;
if(activedialog == true)
{
if(show == 1)
{
GUI.Box(new Rect(0,Screen.height-100,Screen.width,300),"");
GUI.Label(new Rect(10,Screen.height-75,Screen.width,300),text);
}
if(show == 2)
{
text = "Вот теперь ты немного знаешь об этом острове. Теперь тебе надо найти одну из 9 деревень и попробовать помочь людям.\n - Но как я узнаю какая деревня заражена?\n - У зараженных деревень летают мухи... Enter - чтобы продолжить";
GUI.Box(new Rect(0,Screen.height-100,Screen.width,300),"");
GUI.Label(new Rect(10,Screen.height-75,Screen.width,300),text);
}
if(show == 3)
{
text = "А вот и первая зараженная деревня... Чтоже делать в нчала???\n Конечно же собрать травы для жителей.Говорят, что нужно на человека 3 травы, а тут всего-то 3 человека...\n Но только с наружи, а внутри домов, которые наглухо закрыты??? Ладно, принесу 15 трав для всех и отдам их в мельницу.";
GUI.Box(new Rect(0,Screen.height-100,Screen.width,300),"");
GUI.Label(new Rect(10,Screen.height-75,Screen.width,300),text);
}
}
if(newQuest == true)
{
if(show == 3)
{
questText = "Собрать 15 трав...";
GUI.Label(new Rect(Screen.width-200,Screen.height-200,300,30),questText);
}
}
}
void OnTriggerEnter(Collider other)
{
if(other.tag == "Evenger Village")
{
activedialog = true;
show = 3;
}
}
}
То есть, действия в триггерах должно отобрадаться только один раз без повторго показа, не могу сделать ничего с этим. Помогите