最近在看视频学习 untiy 没有源码,跟着视频做遇到一个问题。
就是实现继承单例“MySingletonBase”,管理基类“ManagerBase”继承“MySingletonBase”实现单例,“UIManager”又继承“ManagerBase”,现在的问题就是假如有好多个“ManagerBase”的实现类怎么存到一个“List<ManagerBase<MonoBehaviour>> Managers = new List<ManagerBase<MonoBehaviour>>()”里面,主要就是那个泛型“T”不知道怎么处理,一直提示类型不对。
看视频就看到“UIManager : ManagerBase<UIManager>”是这么写,至于 List 怎么改都存不进去,存进去后主要就是遍历执行 ManagerBase 的方法,泛型 T 对于“ManagerBase”也没有什么用,只为了传给“MySingletonBase”。
怎么才能正常存 List 并遍历执行 ManagerBase 的方法?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MySingletonBase <T> : MonoBehaviour where T : MonoBehaviour
{
private static T instance;
public static T Instance
{
get
{
return instance;
}
}
void Awake() {
instance = this as T;
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using Net;
using UnityEngine;
public abstract class ManagerBase<T> : MySingletonBase<T> where T : MonoBehaviour
{
public List<MonoBase> Monos = new List<MonoBase>();
public void Register(MonoBase monoBase)
{
if (!Monos.Contains(monoBase))
{
Monos.Add(monoBase);
}
}
....
}
using System;
using System.Collections;
using System.Collections.Generic;
using Net;
using UnityEngine;
public class UIManager : ManagerBase<UIManager>
{
protected override byte GetMessageType()
{
return MessageType.Type_Acount;
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.