メイン

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class Main : MonoBehaviour
{
    public StateManager StateManager;

    void Start()
    { 
        StateManager.State_Start();
        StateManager.State_Initialize();
    }

    void FixedUpdate()
    {
        StateManager.State_FixedUpdate();

        if (StateManager.State_End() == true)
        {
            StateManager.State_Change();
        }
    }
    void Update()
    {
        StateManager.State_Update();
    }
}

マネージャー

using UnityEngine;
using System.Collections;

public class StateManager : MonoBehaviour {

    public IState IState;

    public void State_Start() {

        IState.State_Start();
    }

  public void StartState(IState State)
    {
        IState = State;
        IState.State_Initialize();
    }
	
    public void State_Update() {

        IState.State_Update();
    }

    public void State_FixedUpdate()
    {
        IState.State_FixedUpdate();
    }

    public void State_Initialize()
    {
        IState.State_Initialize();
    }

    public bool State_End()
    {
        return IState.State_End();
    }

    public void State_Change()
    {
        IState.State_Change(ref IState);
        IState.State_Initialize();
    }
}

インターフェイス

using UnityEngine;
using System.Collections;

public abstract class IState : MonoBehaviour {

    public abstract void State_Start();

    public abstract void State_Update();

    public abstract void State_FixedUpdate();

    public abstract void State_Initialize();

    public abstract bool State_End();

    public abstract void State_Change(ref IState State);
}

ランナー

using UnityEngine;
using System.Collections;
using System;

public class StateStandby : IState {

    public IState NextState;
    bool Finish;

    public override void State_Start()
    {
        Debug.Log("StateStandby StartUp");
    }

    public override void State_Update()
    {

    }

    public override void State_FixedUpdate()
    {
        Finish = true;
    }

    public override void State_Initialize()
    {
        Finish = false;     
    }

    public override bool State_End()
    {
        return Finish;
    }

    public override void State_Change(ref IState State)
    {
        State = NextState;
    }
}

© 僕の説明書おきばwiki All Rights Reserved.

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー

Grand Theft Auto V 更新停止

Unity5 更新停止

フリーエリア

© 僕の説明書おきばwiki All Rights Reserved.
当サイトの御利用につきまして
いかなるトラブルや
損失・損害等に一切責任を
問わないものとします。

Wiki内検索

管理人/副管理人のみ編集できます