Unity3d 如何在脚本Unity中更改游戏对象属性?
我正在尝试保存/加载我的游戏。在load方法中,每次我更改游戏对象的属性时,这些更改都会应用,然后很快就会恢复。这是我的密码:Unity3d 如何在脚本Unity中更改游戏对象属性?,unity3d,gameobject,Unity3d,Gameobject,我正在尝试保存/加载我的游戏。在load方法中,每次我更改游戏对象的属性时,这些更改都会应用,然后很快就会恢复。这是我的密码: public void Load() { SceneManager.LoadScene(sceneID); List rootObjects=new List(); Scene-Scene=SceneManager.GetActiveScene(); 场景。GetRootGameObjects(rootObjects); int ncube=0,npick=0; for
public void Load()
{
SceneManager.LoadScene(sceneID);
List rootObjects=new List();
Scene-Scene=SceneManager.GetActiveScene();
场景。GetRootGameObjects(rootObjects);
int ncube=0,npick=0;
for(int i=0;i
这些更改将应用于游戏对象,但会立即中止。我如何解决这个问题
包含这些代码行的脚本不是游戏对象的组件
编辑1:完成代码更新。问题可能是
SceneManager.LoadScene
在下一帧中完成。请参阅文档:
它说:
使用SceneManager.LoadScene时,不会进行加载
它立即在下一帧中完成。这是半异步的
行为可能会导致帧结巴,并且会因为负载而混淆
不会立即完成
在同一帧内更改值,因此加载场景完成时将覆盖这些值。Cou可以使用事件来防止这种行为:问题可能是
SceneManager.LoadScene
在下一帧中完成。请参阅文档:
它说:
使用SceneManager.LoadScene时,不会进行加载
它立即在下一帧中完成。这是半异步的
行为可能会导致帧结巴,并且会因为负载而混淆
不会立即完成
在同一帧内更改值,因此加载场景完成时将覆盖这些值。Cou可以使用事件来防止这种行为:问题是我认为
Scene scene = SceneManager.GetActiveScene();
scene.GetRootGameObjects(rootObjects);
在场景完全加载之前从场景中获取对象,以便重置它们
从
使用SceneManager.LoadScene时,加载不会立即发生,而是在下一帧中完成。这种半异步行为会导致帧断断续续,并且会令人困惑,因为加载不会立即完成
我想你更应该像这样在那里使用和使用你的东西
public void Load()
{
SceneManager.LoadScene(sceneID);
}
可能在场景中的一个额外组件中:
void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
// your stuff here
}
void OnDisable()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
}
虽然我们不知道/不知道
player
,cube[ncube]
等从何而来
对于在场景之间传输值,您应该开始使用问题是我认为
Scene scene = SceneManager.GetActiveScene();
scene.GetRootGameObjects(rootObjects);
在场景完全加载之前从场景中获取对象,以便重置它们
从
使用SceneManager.LoadScene时,加载不会立即发生,而是在下一帧中完成。这种半异步行为会导致帧断断续续,并且会令人困惑,因为加载不会立即完成
我想你更应该像这样在那里使用和使用你的东西
public void Load()
{
SceneManager.LoadScene(sceneID);
}
可能在场景中的一个额外组件中:
void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
// your stuff here
}
void OnDisable()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
}
虽然我们不知道/不知道
player
,cube[ncube]
等从何而来
对于在场景之间传输值,您应该开始使用如果它不是一个组件,您如何称呼它?它是另一个对象的组件(不是我试图更改其属性的对象)。具体来说,这是我的加载按钮的一部分。如果用户单击“加载”按钮,将提示此脚本,并尝试加载属于活动场景的游戏对象的属性。是否有其他脚本访问这些属性?是的,这些游戏对象有自己的脚本用于控制。其中一个有一个刚体用于接收用户输入(滚动一个球)。这个加载按钮还能做什么?是否涉及场景更改?如果它不是一个组件,您如何称呼它?它是另一个对象的组件(不是我试图更改其属性的对象)。具体来说,这是我的加载按钮的一部分。如果用户单击“加载”按钮,将提示此脚本,并尝试加载属于活动场景的游戏对象的属性。是否有其他脚本访问这些属性?是的,这些游戏对象有自己的脚本用于控制。其中一个有一个刚体用于接收用户输入(滚动一个球)。这个加载按钮还能做什么?是否涉及场景变换?