Inputの分岐を安全かつ楽にできるライブラリ
Add from GitHub
You can also add it directly from GitHub on Unity 2019.4+. Note that you won't be able to receive updates through Package Manager this way, you'll have to update manually.
- open Package Manager
- click +
- select Add from Git URL
- paste
https://github.com/euglenach/InputSwitcher.git
- click Add
using UnityEngine;
using InputSwitcher;
public class Hoge : MonoBehaviour, IInputReceiver{
}
using UnityEngine;
using UniRx;
using InputSwitcher;
public class Hoge : MonoBehaviour, IInputReceiver{
void Start(){
InputSw.GetKey(this, KeyCode.C)
.Subscribe(_ => {Debug.Log("Hoge");}); //Cをおすとほげええええ
}
}
using UnityEngine;
using UniRx;
using InputSwitcher;
public class Foo : MonoBehaviour,IInputReceiver{
void Start(){
InputSw.GetKey(this, KeyCode.C)
.Subscribe(_ => {Debug.Log("Foo");}); //Cを押すとふううううう
}
}
using InputSwitcher;
using UnityEngine;
using UniRx.Triggers;
using UniRx;
public class SampleInputController : MonoBehaviour{
[SerializeField] private Hoge hoge;
[SerializeField] private Foo foo;
private void Start(){
this.OnKeyDownAsObservable(KeyCode.H)
.Subscribe(_ => {
Debug.Log("switch hoge");
InputSw.Switch(hoge); //Hを押したらhogeのインプットしか受け取らない
});
this.OnKeyDownAsObservable(KeyCode.F)
.Subscribe(_ => {
Debug.Log("switch foo");
InputSw.Switch(foo); //Fを押したらfooのインプットしか受け取らない
});
}
}
インプットを流すクラスに実装するインターフェース
public class Hoge : MonoBehaviour,IInputReceiver{
}
インプットを通すキーになるインスタンスを切り替える
InputSw.Switch(hoge);
InputSwのインプット系のメソッドにIInputReceiverインスタンスを渡す
InputSw.GetKey(this, KeyCode.C)
.Subscribe(_ => {Debug.Log("Hoge");});
現在のキーインスタンスを取得する
InputSw.Current;
今のキーインスタンスが引数と一致するか
InputSw.IsCurrent(hoge)
InputSwがアクティブかどうかを取得する
IsActiveプロパティがfalseだと、SwitchメソッドとInput系メソッドを通さなくなる デフォルトはtrue
InputSw.IsActive;
InputSw.IsActive = !InputSw.IsActive;
InputSw.IaActiveプロパティを非アクティブにする
InputSw.Pause();
InputSw.IaActiveプロパティをアクティブにする
InputSw.Resume();
ログを出力するかのプロパティ デフォルトはtrue
InputSw.IsLogWrite = false;