[Unity]StrangeIOCフレームワークにおけるDispatcherを用いたレスポンスプログラミング
3444 ワード
[Unity]技術学習路線図(長期更新)
[Unity]StrangeIOCフレームワークを用いたレスポンスプログラミング
ダウンロードとインストールダウンロードアドレスGitHub StrangeIOCの特性紹介
Strangeフレームワークの目的は,混乱したUnityプロジェクトコードにおいて,応答型プログラミング設計モードStrangeフレームワークで提供される特性の大部分がオプションであることを設計支援することである. を作成する.追加 は、 を配布する.応答の傍受者 を削除する.
特定のニーズを満たす
プログラム内のゲームオブジェクトをキーボードで制御する必要がある場合は、次のコードで機能を完了できます.
[Unity]StrangeIOCフレームワークを用いたレスポンスプログラミング
ダウンロードとインストール
Strangeフレームワークの目的は,混乱したUnityプロジェクトコードにおいて,応答型プログラミング設計モードStrangeフレームワークで提供される特性の大部分がオプションであることを設計支援することである.
EventDispatcher
を使用してイベント配信機能を完了EventDispatcher
はstrangeフレームワーク内のデフォルト配布システムである.Signals
信号が1つの配布システムに追加される.EventDispatcher
の使用手順EventDispatcher
オブジェクトprivate EventDispatcher dispatcher = new EventDispatcher();
Listener
傍受対象void Start () {
// 'Fire' , CallBack
dispatcher.AddListener ("Fire", ((IEvent payload) => {
Debug.Log(payload.data);
}));
}
Fire
型の文字列//UGUI
public void DidClickButton()
{
dispatcher.Dispatch ("Fire", " ");
}
Listener
dispatcher.RemoveListener ("Fire", ecb);
特定のニーズを満たす
プログラム内のゲームオブジェクトをキーボードで制御する必要がある場合は、次のコードで機能を完了できます.
HHGameController.cs
using UnityEngine;
using System.Collections;
using strange.extensions.dispatcher.eventdispatcher.impl;
using strange.extensions.dispatcher.eventdispatcher.api;
public class HelloView : MonoBehaviour {
// Use this for initialization
//
public HHPlayer Player;
//
private Event e;
void OnGUI()
{
e = Event.current;
if (e == null) {
return;
}
Player.Dispatcher.Dispatch (e.keyCode);
}
}
HHPlayer.cs
using UnityEngine;
using System.Collections;
using strange.extensions.dispatcher.eventdispatcher.impl;
using strange.extensions.dispatcher.eventdispatcher.api;
public class HHPlayer:MonoBehaviour
{
private EventDispatcher _dispatcher = null;
public EventDispatcher Dispatcher{
get{
if (_dispatcher == null) {
_dispatcher = new EventDispatcher ();
}
return _dispatcher;
}
}
void Start()
{
this.InitDispatcher ();
}
private void InitDispatcher()
{
EventCallback vertical_callback = ((IEvent payload) => {
Vector3 translate = new Vector3 ();
translate.x = 0f;
translate.y = 0f;
translate.z = Input.GetAxis ("Vertical") * 0.03f;
this.transform.Translate (translate);
});
EventCallback horizontal_callback = ((IEvent payload) => {
Vector3 rotate = new Vector3();
rotate.x = 0f;
rotate.y = 1f;
rotate.z = 0f;
this.transform.Rotate(rotate,Input.GetAxis("Horizontal"));
});
this.Dispatcher.AddListener (KeyCode.W, vertical_callback);
this.Dispatcher.AddListener (KeyCode.S, vertical_callback);
this.Dispatcher.AddListener (KeyCode.A, horizontal_callback);
this.Dispatcher.AddListener (KeyCode.D, horizontal_callback);
}
}