-1 c#
我意识到有数百页与此错误相关。然而,我已经查看了其中的许多内容,但无法找到与我的特定问题相关的内容,因此,如果这是重复的线程,我深表歉意。我正在尝试修改 Unity 提供的 2D 相机脚本,以将其“目标”(它遵循的游戏对象)选择为用户选择的任何角色。我是 C# 新手,所以我不太清楚如何处理这个错误。我发布了整个代码以防万一,但错误应该可以在前 10 行左右找到
using UnityEngine;
namespace UnitySampleAssets._2D
{
public class Camera2DFollow : MonoBehaviour
{
private string character = PlayerPrefs.GetString("Character")
public Transform target = Transform.Find(character);
public float damping = 1;
public float lookAheadFactor = 3;
public float lookAheadReturnSpeed = 0.5f;
public float lookAheadMoveThreshold = 0.1f;
private float offsetZ;
private Vector3 lastTargetPosition;
private Vector3 currentVelocity;
private Vector3 lookAheadPos;
// Use this for initialization
private void Start()
{
lastTargetPosition = target.position;
offsetZ = (transform.position - target.position).z;
transform.parent = null;
}
// Update is called once per frame
private void Update()
{
// only update lookahead pos if accelerating or changed direction
float xMoveDelta = (target.position - lastTargetPosition).x;
bool updateLookAheadTarget = Mathf.Abs(xMoveDelta) > lookAheadMoveThreshold;
if (updateLookAheadTarget)
{
lookAheadPos = lookAheadFactor*Vector3.right*Mathf.Sign(xMoveDelta);
}
else
{
lookAheadPos = Vector3.MoveTowards(lookAheadPos, Vector3.zero, Time.deltaTime*lookAheadReturnSpeed);
}
Vector3 aheadTargetPos = target.position + lookAheadPos + Vector3.forward*offsetZ;
Vector3 newPos = Vector3.SmoothDamp(transform.position, aheadTargetPos, ref currentVelocity, damping);
transform.position = newPos;
lastTargetPosition = target.position;
}
}
}
Run Code Online (Sandbox Code Playgroud)
不能用另一个变量初始化一个变量
private string character = PlayerPrefs.GetString("Character")
public Transform target = Transform.Find(character); // <---- Trying to access 'character' which is a variable
Run Code Online (Sandbox Code Playgroud)
而是将其放入Start()方法中
private void Start()
{
target = Transform.Find(character); // <---- here
lastTargetPosition = target.position;
offsetZ = (transform.position - target.position).z;
transform.parent = null;
}
Run Code Online (Sandbox Code Playgroud)