【发布时间】:2020-06-27 10:47:03
【问题描述】:
我正在开发一款游戏,我有一个脚本来保存角色的统计信息。相同的脚本用于英雄和敌人。
实际上有 2 个脚本。第一个脚本用于游戏设置,确保将哪个玩家设置为可见以及将哪个敌人设置为可见。该脚本具有类似的变量
[Header("Players")]
public GameObject LocalPlayer;
public GameObject Enemy;
现在在我的第二个名为 User_stats 的脚本中,我想将目标设置为 hero = 敌人,反之亦然。我在我的第二个脚本中所做的是我通过执行以下代码在其中调用我的第一个脚本(FKManage)
私有 FKManage FKManage; 然后在我的 void start 中,我使用了一个名为 SetTarget(); 的方法;这是定义这两个数组并告诉他们带有标签 player 的对象需要来自 FKManage 脚本的 Target = Enemy,反之亦然
GameObject[] protagonistOpponent = GameObject.FindGameObjectsWithTag("Player");
foreach (GameObject obst in protagonistOpponent)
obst.GetComponent<User_Stats>().Target = FKManage.Enemy.transform;
GameObject[] AntagonistOpponent = GameObject.FindGameObjectsWithTag("Enemy");
foreach (GameObject obst in AntagonistOpponent)
obst.GetComponent<User_Stats>().Target = FKManage.LocalPlayer.transform;
它可以正常工作,但只能在 Unity 编辑器中使用。一旦我为 Android 构建游戏并在 Android 下运行它,我的角色就不会做任何事情(因为未设置目标)。
我想知道为什么我的构建在编辑器中无法正常工作?我在哪里犯错?在构建游戏时,这是我在我的 android logcat 中遇到的错误。
【问题讨论】:
-
您好,感谢您的帮助。我已经阅读了整个页面,是的,我理解它所说的内容,但我认为这并不能解决我的问题,因为我的游戏没有在编辑器中设置空引用,但它在游戏构建中设置。另外请告诉我这怎么可能?我对 Unity 有点陌生并且正在学习,我的意思是如果我的游戏在编辑器中运行良好而不是在构建中运行良好,这样我就永远无法确定我的游戏是否还可以,并且在每次我都构建的情况下是否可以在手机上运行做一个小改变。对不起,我的长短信。我被这个错误困住了,现在已经有一周左右了。
-
这意味着某些东西在你的电脑上没有运行时不起作用,所以可能是播放器偏好、文件访问、网络服务器响应,这里的任何人都无法猜测你有什么依赖关系,但有些东西不起作用,因此不工作。许多事情不会以相同的方式产生错误,因为有时开始我认为不会告诉你错误,所以如果在开始时你分配了一堆东西,如果那不起作用,那么那些就不会被设置..
-
您是否尝试从脚本中的资源加载文件或对象,而不是在检查器中分配它? Android 文件系统不能像 Unity 预期的那样工作,它可能会查看该文件的错误位置。我在加载我的 json 文件时遇到了类似的问题。我想通了,所以根据您的回答,我可以看看我的解决方案。
-
嗨@AykutKaraca 我猜你是对的。我没有在检查员中分配值。我从另一个加载场景的脚本中获取该值。我认为你是对的,android 系统不像 Unity 那样工作,因为在 Unity 中,我的脚本成功地从其他脚本获取 GameObject,而 android Build 不是。请解释一下您是如何解决的?