2018年8月19日 星期日

Test程式碼

using System;
using UnityEngine;

public class TriggerChange : MonoBehaviour
{
    public GameObject changeA;
    public GameObject changeB;

    public GameObject catalysis;
    public GameObject getCatalysis;

    public GameObject messageCavans;

    // check every step
    private bool isMessageOver = false;
    private bool isShow = false;

    // 列舉改變方式
    public enum ChangeStatus
    {
        Right_Now,
        Wait_Time
    }

    // 宣告改變方式
    public ChangeStatus changeStatus;

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (changeStatus == ChangeStatus.Right_Now)
            RightNowChange();
        else if (changeStatus == ChangeStatus.Right_Now)
            WaitTimeChange();

    }

    // 直接改變
    private void RightNowChange()
    {
        if (isShow)
        {
            if (getCatalysis && catalysis.name == getCatalysis.name)
            {
                changeA.SetActive(false);
                changeB.SetActive(true);
            }
            else
            {
                changeA.SetActive(true);
                changeB.SetActive(false);
            }
        }
    }
    // 等待改變
    private void WaitTimeChange()
    {
        if (changeA.activeSelf && !changeB.activeSelf)
        {
            if (isShow)
            {
                if (getCatalysis && catalysis.name == getCatalysis.name)
                {
                    // if game message is over , messageCavans doesn't open
                    if (!isMessageOver && getCatalysis != null)
                        messageCavans.SetActive(true);
                }
                else
                    messageCavans.SetActive(false);
            }
        }
    }

    public void DeterminedChange()
    {
        changeA.SetActive(false);
        changeB.SetActive(true);

        if (messageCavans)
            messageCavans.SetActive(false);
        isMessageOver = true;
    }
    public void OnAppear()
    {
        isShow = true;
    }
    public void OnDisappear()
    {
        GameReset();
    }

    private void GameReset()
    {
        isShow = false;
        if (messageCavans)
            messageCavans.SetActive(false);
    }
}