80 lines
1.6 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
} |