using UnityEngine; using System.Collections;
public class ClickToMoveScript : MonoBehaviour
{
public string Chopping = "Chopping";
public void PlayWoodCuttingAnim()
{
//Play Woodcutting Animation
gameObject.GetComponent<Animation>().CrossFade (Chopping);
}
}
继承我的另一个剧本
using UnityEngine;
using System.Collections;
public class WoodCuttingScript: MonoBehaviour
{
ClickToMoveScript ClickToMove;
void Start()
{
ClickToMove.PlayWoodCuttingAnim();
}
}
http://i.stack.imgur.com/wt0mN.png
正如您可以看到上面的链接^我已经在动画组件中添加了动画。
我发现的另一件事是,如果我在ClickToMove脚本中调用PlayWoodCuttingAnim()函数它可以正常工作,但在另一个脚本中它可以工作。
错误控制台&gt; NullReferenceException:未将对象引用设置为对象的实例。
非常感谢任何帮助
答案 0 :(得分:5)
嗯,很少有常见的方法可以这样做。
与从另一个脚本调用方法一样,您需要附加(到gameObject)脚本实例而不是简单的脚本实例。
你可以通过,
来做到void Start()
{
ClickToMove = FindObjectOfType<ClickToMoveScript>();
ClickToMove.PlayWoodCuttingAnim();
}
答案 1 :(得分:2)
尝试使用.GetComponent<YourScriptName>.YourFunction()
。
您的功能将(我相信)必须公开才能在另一个脚本中使用:)
答案 2 :(得分:0)
您应该使用GetComponent
来获取另一个脚本的实例。
ClickToMove= gameObject.GetComponent("ClickToMoveScript") as ClickToMoveScript;
ClickToMove.PlayWoodCuttingAnim();
答案 3 :(得分:0)
这是我使用的:
FindObjectOfType<Sliding_Door>().Open_Door(1);
您也可以使用:
Sliding_Door door = FindObjectOfType<Sliding_Door>();
door.Open_Door(1);
这是你的版本
FindObjectOfType<ClickToMoveScript>().PlayWoodCuttingAnim();
或
ClickToMoveScript init = FindObjectOfType<ClickToMoveScript>();
init.PlayWoodCuttingAnim();
答案 4 :(得分:-3)
您需要像ClickToMoveScript ClickToMove = new ClickToMoveScript();