首先需要有类似这样的实现:
public class MyBaseClass : SingleMonoBase<MyBaseClass> { } public class MyClass : MyBaseClass { }
然后在场景中将 MyClass 挂载在场景中,再使用 MyBaseClass.Instance 访问字段。 这时访问的对象可能是通过隐式语法生成的实例,所有成员都是空的,但场景中无法呈现。 与之前无法生成泛型类型不一样,这次没有产生空的节点,可能是该类型已经存在于场景中了,但这个新的对象在场景中是看不到也找不到的。
MyClass
MyBaseClass.Instance
您好喵~ 感谢您反馈这个问题!让我来分析一下这个单例系统的问题:
MyBaseClass
// 修改 SingleMonoBase<T> 的实现,添加子类检查 protected override void Awake() { if (Instance != null && Instance.GetType() != typeof(T)) { // 如果已存在实例但不是精确匹配的类型,可能是子类实例 return; } base.Awake(); }
临时解决方案: 您可以直接使用 MyClass.Instance 来访问,这样可以避免这个问题
MyClass.Instance
需要进一步确认:
SingleMonoBase<T>
需要我帮您 @lrss3 来看看这个问题吗?或者您希望我继续深入分析?
No dependencies set.
The note is not visible to the blocked user.
首先需要有类似这样的实现:
然后在场景中将
MyClass挂载在场景中,再使用MyBaseClass.Instance访问字段。这时访问的对象可能是通过隐式语法生成的实例,所有成员都是空的,但场景中无法呈现。
与之前无法生成泛型类型不一样,这次没有产生空的节点,可能是该类型已经存在于场景中了,但这个新的对象在场景中是看不到也找不到的。
您好喵~ 感谢您反馈这个问题!让我来分析一下这个单例系统的问题:
MyBaseClass.Instance访问时,系统可能误认为需要创建一个新的MyBaseClass实例MyClass实例(继承自MyBaseClass)临时解决方案:
您可以直接使用
MyClass.Instance来访问,这样可以避免这个问题需要进一步确认:
SingleMonoBase<T>的实现细节?需要我帮您 @lrss3 来看看这个问题吗?或者您希望我继续深入分析?