2017-04-20 82 views
0

我得到了错误的NullReferenceException:未将对象引用设置到对象 ThirdPersonCamera.Update()的一个实例(在资产/脚本/ ThirdPersonCamera.cs:24)团结5第三人脚本错误

我代码:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using System.Runtime.InteropServices; 
using UnityEngine.SocialPlatforms; 
using UnityEngine.UI; 
using UnityStandardAssets.Utility; 

public class ThirdPersonCamera : MonoBehaviour { 

    [SerializeField]Vector3 cameraOffset; 
    [SerializeField]float damping; 

    Transform cameraLookTarget; 
    Player localPlayer; 

    void Awake() { 
     GameManger.Instance.OnLocalPlayerJoined += HandleOnLocalPlayerJoined; 
    } 

    void HandleOnLocalPlayerJoined (Player player) { 
     localPlayer = player; 
     cameraLookTarget = localPlayer.transform.Find("cameraLookTarget"); 

     if (cameraLookTarget == null) { 
      cameraLookTarget = localPlayer.transform; 
     } 
    } 


    // Update is called once per frame 
    void Update() { 
     Vector3 targetPosition = cameraLookTarget.position + localPlayer.transform.forward * cameraOffset.z + 
       localPlayer.transform.up * cameraOffset.y + 
       localPlayer.transform.right * cameraOffset.x; 

     transform.position = Vector3.Lerp(transform.position, targetPosition, damping * Time.deltaTime); 
    } 
} 

我试过更改脚本执行顺序,但没有任何工作。我不知道什么是错的。

回答

1

确保您的脚本中有一个GameObject分配给LocalPlayer变量。该对象正在您的层次结构中查找不带引号的名为“cameraLookTarget”的内容。资本化问题。

我建议在Awake()方法中寻找一个LocalPlayer对象,如果它为null,则使用Debug.Log(“没有本地播放器分配”)来提醒自己实际上没有分配它。