unity3d - 如果脚本在另一个场景中,如何将对象分配给脚本?
问题描述
在开始游戏之前,我在编辑器中有两个场景:
游戏和主菜单
在底部的对象 GameObject 上,我有一个脚本 Scaling。
如果我将 Cube 拖到 Object To Scale 字段并运行游戏,它将正常工作。我可以按 G 键,它会按比例放大/缩小立方体。
如果我将播放器下的 NAVI 拖动到缩放脚本字段 Object To Scale 则在运行游戏时 NAVI 被破坏,因为现在播放器(克隆)在另一个场景中。
运行游戏时立方体在同一场景中。
现在运行游戏后的截图:立方体和带有缩放脚本的游戏对象仍在游戏场景中。但是玩家现在在 DontDestroyOnLoad 场景中:
然后缩放脚本中缺少 NAVI:
Player is prefab 也许我应该将 Player prefab 拖到脚本中,然后在脚本中找到 NAVI child ?而是拖动 NAVI。
解决方案
看起来场景中的播放器对象被破坏了,并且新的播放器从预制件中实例化。由于场景中的原始播放器被破坏,对原始 NAVI 的引用也丢失了。如果您希望脚本引用克隆播放器上的 NAVI,则必须将其附加到播放器预制件,否则必须在运行时搜索和引用它。
所以是的,您应该将它拖到播放器预制件上的 NAVI 对象,而不是场景中的播放器。
推荐阅读
- python - 即使无法使用 numpy 进行等分,也可以按列拆分数组
- amazon-web-services - ECS,创建ecs实例后如何添加用户数据
- intellij-idea - 如何在 Intellij Idea 中删除活动大括号的边框
- python - Tkinter 简单计算 GUI
- reactjs - 导出功能组件不起作用
- sql - 我在代码中的这一行出现错误
- r - 如何有效地替换函数中的参数?
- javascript - gl-matrix mat4 缺少 Float32Array 属性
- python - 检测 180 度旋转并从数组中删除旋转的元素
- c++ - CUDA 在内核函数中的嵌套循环后不执行代码