您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
72 行
2.3 KiB
72 行
2.3 KiB
using NaughtyAttributes;
|
|
using UnityEngine;
|
|
|
|
namespace GameplayIngredients.Actions
|
|
{
|
|
[AddComponentMenu(ComponentMenu.actionsPath + "Toggle GameObject Action")]
|
|
[Callable("Game Objects", "Actions/ic-action-list.png")]
|
|
public class ToggleGameObjectAction : ActionBase
|
|
{
|
|
[ContextMenu("Update Toggles from Current State")]
|
|
void UpdateFromCurrentState()
|
|
{
|
|
for (int i = 0; i < Targets.Length; i++)
|
|
{
|
|
if (Targets[i].GameObject == null)
|
|
continue;
|
|
|
|
Targets[i].State = Targets[i].GameObject.activeSelf ? GameObjectToggle.GameObjectToggleState.Enable : GameObjectToggle.GameObjectToggleState.Disable;
|
|
|
|
}
|
|
}
|
|
|
|
[ReorderableList]
|
|
public GameObjectToggle[] Targets;
|
|
|
|
public override void Execute(GameObject instigator = null)
|
|
{
|
|
foreach(var target in Targets)
|
|
{
|
|
if (target.GameObject == null)
|
|
{
|
|
Debug.LogWarning($"({gameObject.name}) > ToggleGameObjectAction ({this.Name}) Target is null, ignoring", this.gameObject);
|
|
}
|
|
else
|
|
{
|
|
switch(target.State)
|
|
{
|
|
case GameObjectToggle.GameObjectToggleState.Disable:
|
|
target.GameObject.SetActive(false);
|
|
break;
|
|
case GameObjectToggle.GameObjectToggleState.Enable:
|
|
target.GameObject.SetActive(true);
|
|
break;
|
|
case GameObjectToggle.GameObjectToggleState.Toggle:
|
|
target.GameObject.SetActive(!target.GameObject.activeSelf);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public override string GetDefaultName()
|
|
{
|
|
return $"Toggle GameObject(s)";
|
|
}
|
|
|
|
[System.Serializable]
|
|
public struct GameObjectToggle
|
|
{
|
|
[System.Serializable]
|
|
public enum GameObjectToggleState
|
|
{
|
|
Disable = 0,
|
|
Enable = 1,
|
|
Toggle = 2
|
|
}
|
|
|
|
public GameObject GameObject;
|
|
public GameObjectToggleState State;
|
|
}
|
|
}
|
|
}
|