据资料称
static 单例的变量 在切换场景的时候 是不会被清除的
我切换场景是后 这个变量本事倒是没有被清除 但是他的成员变量却被清除了
这是怎么回事? 难道本来就应该这样 难道这种情况之下要使用DontDestroyOnLoad 才能保证变量不被篡改?
具体的例子是这样的 我在进入游戏的menu场景里 创建了一个单例manager 比如:
public class HeroManager : MonoBehaviour
{
public static HeroManager shareHeroManager;
public List<HeroData> lHeroData;
.....
public static HeroManager GetShareHeroManager()
{
if(shareHeroManager == null)
{ GameObject obj=new GameObject();
shareHeroManager=obj.AddComponent<HeroManager>();
}
return shareHeroManager;
}
}
这样的一个单例类里面包含了玩家所使用英雄的数据 我当然希望他在任何切换场景的时候 都不会变化
但是我在切换场景之后 shareHeroManager 这个static变量是存在的 没有变成null
但是里面的lHeroData却变成了null
请大神指教
static 单例的变量 在切换场景的时候 是不会被清除的
我切换场景是后 这个变量本事倒是没有被清除 但是他的成员变量却被清除了
这是怎么回事? 难道本来就应该这样 难道这种情况之下要使用DontDestroyOnLoad 才能保证变量不被篡改?
具体的例子是这样的 我在进入游戏的menu场景里 创建了一个单例manager 比如:
public class HeroManager : MonoBehaviour
{
public static HeroManager shareHeroManager;
public List<HeroData> lHeroData;
.....
public static HeroManager GetShareHeroManager()
{
if(shareHeroManager == null)
{ GameObject obj=new GameObject();
shareHeroManager=obj.AddComponent<HeroManager>();
}
return shareHeroManager;
}
}
这样的一个单例类里面包含了玩家所使用英雄的数据 我当然希望他在任何切换场景的时候 都不会变化
但是我在切换场景之后 shareHeroManager 这个static变量是存在的 没有变成null
但是里面的lHeroData却变成了null
请大神指教
