Files
2024-11-20 15:21:28 +01:00

80 lines
1.6 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.GameObject)]
[Tooltip("Finds a Game Object by Name and/or Tag.")]
public class FindGameObject : FsmStateAction
{
[Tooltip("The name of the GameObject to find. You can leave this empty if you specify a Tag.")]
public FsmString objectName;
[UIHint(UIHint.Tag)]
[Tooltip("Find a GameObject with this tag. If Object Name is specified then both name and Tag must match.")]
public FsmString withTag;
[RequiredField]
[UIHint(UIHint.Variable)]
[Tooltip("Store the result in a GameObject variable.")]
public FsmGameObject store;
public override void Reset()
{
objectName = "";
withTag = "Untagged";
store = null;
}
public override void OnEnter()
{
Find();
Finish();
}
void Find()
{
if (withTag.Value != "Untagged")
{
if (!string.IsNullOrEmpty(objectName.Value))
{
var possibleGameObjects = GameObject.FindGameObjectsWithTag(withTag.Value);
foreach (var go in possibleGameObjects)
{
if (go.name == objectName.Value)
{
store.Value = go;
return;
}
}
store.Value = null;
return;
}
store.Value = GameObject.FindGameObjectWithTag(withTag.Value);
return;
}
store.Value = GameObject.Find(objectName.Value);
}
public override string ErrorCheck()
{
if (string.IsNullOrEmpty(objectName.Value) && string.IsNullOrEmpty(withTag.Value))
{
return "Specify Name, Tag, or both.";
}
return null;
}
}
}