Activator
abstract
名前空間:SilCilSystem.Activators
継承:MonoBehaviour
Assembly:SilCilSystem.Packages
bool
型の変数アセットでゲームオブジェクトのアクティブやコンポーネントのenabled
を切り替えるためのクラスです。
クラス一覧
name | description |
---|---|
GameObjectActivator | GameObjectのActiveを切り替え |
BehaviourActivator | コンポーネントのenabledを切り替え |
設定項目
type | name | description |
---|---|---|
bool | SetOnStart | trueならStartメソッドで値を反映 |
ReadonlyPropertyBool | SetOnUpdate | trueならUpdateメソッドで値を反映 |
ReadonlyPropertyBool | IsActive | 機能のON/OFFを指定 |
bool | Reverse | trueならIsActiveのtrue/falseと逆の値を設定 |
使用例
例えば、クリックするたびにCubeをON/OFFする処理をしてみます。
まず、bool
型の変数アセットを作成して以下のスクリプトに設定します。
using UnityEngine;
using SilCilSystem.Variables;
public class TestActivator : MonoBehaviour
{
[SerializeField] private VariableBool m_value = default;
private void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
m_value.Value = !m_value;
}
}
}
GameObjectActivator
を作成して先ほどの変数アセットを設定します。
Targets
にON/OFFを切り替えたいゲームオブジェクトを指定します。
実装
UpdateDispatcherを使用して処理を呼んでいます。
bool MicroUpdate(float deltaTime)
{
if (!enabled) return true;
if (m_setOnUpdate) SetActives((m_reverse == false) ? m_isActive : !m_isActive);
return true;
}
SetActives
メソッドはクラス別に実装しています。
GameObjectActivator
の場合は以下のようになります。
void SetActives(bool value)
{
foreach(GameObject target in m_targets)
{
if (target == null) continue;
target.SetActive(value);
}
}