有一个类player包含停止( stopPlayerAnim) 和启动( startPlayerAnim) 播放器动画的功能,以及启动Joystic它们的类。但是当我按下操纵杆时,游戏崩溃并出现以下错误:
NullReferenceException:对象引用未设置为对象的实例 player.startPlayerAnim ()(位于 Assets/scripts/player.cs:46)Joystic.OnDrag (UnityEngine.EventSystems.PointerEventData eventData)(位于 Assets/scripts/Joystic.cs: 13) UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IDragHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (在Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:71) UnityEngine.EventSystems.ExecuteEvents.Execute[T](UnityEngine.GameObject 目标,UnityEngine.EventSystems.BaseEventData eventData,UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] 函子)(在 Library/PackageCache/com.unity.ugui@1.0 .0/Runtime/EventSystem/ExecuteEvents.cs:262) UnityEngine.EventSystems.EventSystem:Update()(在 Library/PackageCache/com.unity.ugui@1.0。0/运行时/EventSystem/EventSystem.cs:385)>
错误指的是这一行:player1.GetComponent<Animator>().SetBool("ball_anim", true);
是什么原因造成的,如何消除?上述脚本的代码如下:
播放器.cs:
public class player : MonoBehaviour
{
public static GameObject player1;
void Start()
{
}
public static void startPlayerAnim()
{
player1.GetComponent<Animator>().SetBool("ball_anim", true);
player1.GetComponent<Animator>().SetBool("inverted_ball_anim", false);
}
public static void stopPlayerAnim()
{
player1.GetComponent<Animator>().SetBool("ball_anim", false);
player1.GetComponent<Animator>().SetBool("inverted_ball_anim", false);
}
public static void startInvertedPlayerAnim()
{
player1.GetComponent<Animator>().SetBool("inverted_ball_anim", true);
player1.GetComponent<Animator>().SetBool("ball_anim", false);
}
}
你还没有初始化
player1,你只有一个空字段。还要检查您尝试从中获取组件的对象上是否有动画脚本。