我一直在收到错误
UnassignedReferenceException :EnemyAI的变量播放器没有 已被分配。你可能需要分配玩家的变量 检查员的EnemyAI脚本。
我对所有这些脚本的东西都是新手,我试图检查其他论坛,但他们根本没有帮助,但让我更加困惑。这是脚本:
$(document).ready(function(){
$(document).on('scroll', '.fc-time-grid-container', function(){
alert('scrolled!');
});
});
任何想法?
答案 0 :(得分:0)
使用的变量
player
,类型为Transform
Quaternion rotation = Quaternion.LookRotation (player.position - transform.position);
在为其分配任何值之前。我相信Transform
是项目中的另一个类,player
是这类对象。您可能希望在尝试使用它之前实例化该对象。
像
这样的东西player = new Transform(...);
答案 1 :(得分:0)
在C#中,引用(例如您的EnemyAI引用)可以设置为Null
,这意味着它们无法指向。当您的代码尝试在空引用上运行某些方法时,这会导致很多NullReferenceException
errors。
我怀疑Unity创建了一种特殊机制来防止这种错误发生在你身上。 Unity甚至MonoBehaviours的公共字段用于在游戏运行之前在编辑器中设置MonoBehaviour的实例。 MonoBehaviours通常不是从头开始创建的,99%它们是从编辑并保存在编辑器中的实例中反序列化的。
因此,有了这个错误,Unity会警告您,您没有为此特定的MonoBehaviour实例分配任何值。要解决这个问题,请打开编辑器,选择此错误引用的对象(通常,您只需单击控制台中的错误,对象将被选中),将引用设置为某些内容,错误将被修复。
但是,根据脚本的上下文判断,您可以选择不同的路径。很可能你在场景中只有一个玩家,同时你可能有数百个敌人 - 你不想将他们的引用分配给玩家一百次!如果你想要使用预制件,你甚至无法做到。因此,不要将其设为公共字段,而是将其设置为私有字段,并使用Start
方法在初始化时将其分配给此字段。 FindGameObjectWithTag("Player")
是一种可能的方法;但是,根据我的经验,依赖于标签(和一般的字符串)在强大的静态类型语言(如C#)中是次优的,我会使用Singleton或Service Locator模式来查找而不是玩家。