无法更改其他场景中的游戏对象位置
Posted
技术标签:
【中文标题】无法更改其他场景中的游戏对象位置【英文标题】:Couldn't change gameobject position in other scene 【发布时间】:2021-03-21 20:33:12 【问题描述】:我在游戏中添加了 score 属性。但是当游戏场景发生变化时,我找不到如何改变它的位置。 (在这种情况下,得分属性在游戏顶部,我试图在游戏中间改变它的位置)
这是我将“GameHandler”对象(包含分数属性)移动到其他场景的代码:
private void Awake()
gameHandlerCount = FindObjectsOfType<GameHandler>().Length;
if (gameHandlerCount > 1)
Destroy(gameObject);
else
DontDestroyOnLoad(gameObject);
(当前位置):https://i.stack.imgur.com/ZFt3W.png[1]
(目标位置):https://i.stack.imgur.com/cwWKp.png [2]
感谢您的关注
【问题讨论】:
【参考方案1】:问题可能是Destroy
被延迟并且没有立即发生。
这意味着FindObjectsOfType
可能仍会返回已销毁的对象,因此您可能会销毁所有实例。
您可以使用实际的单例模式:
// public read-only property
public static GameHandler Instance => _instance;
private static GameHandler _instance;
private void Awake()
if(_instance)
Destroy (gameObject);
return;
_instance = this;
DontDestroyOnLoad (gameObject);
我不知道你在哪里尝试改变它的位置,但你现在可以做
GameHandler.Instance.transform.position = new Vevtor3 (x,y,z);
好的,添加图片后:
实际上,您要做的不是使用绝对定位,而是将乐谱文本居中。
您可以通过 RectTransform
组件执行此操作,例如选择这个选项
您还可以按住 CTRL 和 SHIFT 直接应用更改和旋转设置并将其设置为顶部和中心。
【讨论】:
我做了你上面写的。但它并没有改变任何东西。其实我不能很好地表白自己。对不起。我希望在游戏场景发生变化时改变记分牌。我添加了图片来解释我想要做什么@derHugo @apoleyta97 查看底部的更新。 我做到了。但记分牌位置没有改变。它仍然出现在游戏的右上角。也许我应该通过脚本更改它? (因为游戏还在进行中)以上是关于无法更改其他场景中的游戏对象位置的主要内容,如果未能解决你的问题,请参考以下文章
公共静态 Dictionary<String,GameObject> 中的游戏对象在 Unity 中的场景更改时被销毁
Unity Vuforia Google VR - 无法让 onPointerEnter 自行更改游戏对象的材质