重复加载assetbundle会导致闪退
重复加载assetbundle会导致闪退
Collider2D OverlapPoint
## 游戏编程框架
推荐视频:
疑惑
状态转换的方法
疑惑:
1:为何要定义basePanel
可以在GameManager里面封装方法来简化后续的代码量。
CanvasTransform = GameObject.Find("Canvas").transform;
public UIFacade(UIManager uiManager)
为何要穿uiManager
疑问
字典文件为何使用 IBasePanel
未解决
Loadpath+resourcePath
未解决
对象池问题,Containskey
对象池字典需要加深理解。
只有游戏物体才有对象池一说
其他音频等资源是没有对象池的。
xxx.pop怎么来的?
对象池问题未解决
为什么monsterpool.Count<=0来判断,因为可能存在多个项目
关于状态机的Private是否有必要,后续再复习。
上节HP问题
若定义一个父类来继承接口,子类继承父类,要同事显示子类和父类的方法的话。
可以在Start实例化中使用
Leblanc myHero=new Leblanc()
I/O
IHero myHero=new Leblanc()
意思就是需要使用子类对象来接受实例化的子类。
但是这样不方便。
另外解决方法。
使用重写方法。
父类改成Virtual void
子类改成override
这样便可以使用父类对象来接受了。
但是父类若定义了HP等数值,则需要以父类对象类接收,而不能以接口对象来接收
接口可以随时添加新方法,添加以后点实现接口即可
接口对拓展开放,对修改关闭。
接口只允许有方法,不允许有字段。如果添加血量,解决方法。可以添加一个基类,让后面的子类继承基类,具体如下
自己思考:适用于诸多平行功能
接口
接口名字都以I开头,以interface为关键字
比如
public interface IHero
建议把多个对象放在一个单例里面调用,这样不会使代码凌乱
单例模板的制作
//单例模板的制作
public abstract class SingletontestToOne<T> : MonoBehaviour
where T : MonoBehaviour
{
private static T _One;
public static T One
{
get
{
return _One;
}
}
private void Awake()
{
_One = this as T;
}
//可以得出结论,单例模板和名字无关,只要后续名字都一致即可。于上面是否制作过单例也无关。
}
单例模式
生成
饿汉式单例
private static SingleTon _instance;
(按照ctrl+r+e可以直接封装get set方法)
public static Singleton Instance
{
get
{
return_instance;
}
}
private void Awake()
{
_instance=this;
}