当我的玩家死亡并重生时,我试图让我的摄像头看到新示例化的玩家。
public class CameraController : MonoBehaviour
{
void Update()
{
var target = GameObject.FindGameObjectWithTag("Player");
Transform target;
transform.LookAt(target);
}
}
我尝试在没有公共“拖放”Transform变量的情况下执行此操作。
我没有任何问题,只是我的基本球员,但当我试图重生与示例化(),相机无法检测到副本。
3条答案
按热度按时间xqnpmsa81#
我们删除了
Transform target;
,而使用...一般而言,出于性能考虑,您应避免在
Update
中使用任何Find
变体,而是在Start
中使用一次,然后重用该引用8ulbf1ek2#
我找到了一个解决办法。对于其他想找类似东西的人:
{
}
vmdwslir3#
你遇到的第一个问题是你正在寻找玩家的游戏对象,它的类型“var”将被设置为。之后,当你将目标设置为具有空值的类型Transform时,它将被覆盖。获得玩家的Transform组件并将目标设置为相等,这将解决你的问题。
然而,性能方面:
您希望避免在Update()中搜索游戏对象,而是一次性找到您要搜索的内容并缓存它。找到游戏对象是一个代价高昂的操作,将其放在Update()中将在每个周期执行该操作。
更适合CPU的处理方式如下所示:
我的工作方式是在角色重生时调用脚本中的findTarget方法,并将其传递给player标记,这也使该方法更加通用,因此如果您希望将摄像机移动到电影事件或类似事件的不同目标,则可以使用其他摄像机移位技巧。