####项目架构与说明 >>Artists 项目专用文件地址 >>BITKit 工具包,通常不需要动 >>Mods 主要存放DLC等内容 >>Plugins 插件存放地址 >>Standard Assets 资产包目录 >>StreamingAssets GDNet会用到的生成目录 >>Libs 项目专用类库 >>Fltoto Fltoto专用文件夹 #### Libs内容写法 #####首先,你需要在脚本的程序集中引用 >SerializeReference Extensions #####接着定义接口 ~~~CSharp public interface IAction { void Excute(); } ~~~ #####新建类,并实现接口 ~~~CSharp [System.Serializable] public class BITAction:IAction { public void Excute() { Debug.Log("BIT执行了该任务") } } [System.Serializable] public class FltotoAction:IAction { public void Excute() { Debug.Log("Fltoto执行了该任务") } } ~~~ #####最后控制器会这么调用接口 ~~~CSharp [SerializeReference, SubclassSelector] public IAction action; void Start() { //执行该任务 action.Excute(); } ~~~ #####这就是我们如何利用接口进行解耦 ~~~CSharp //物品容器接口 public interface IContainer { bool AddItem(); bool RemoveItem(); bool TryGetItem(Guid key,out var item); } //武器控制器 public class GunController { [SerializeReference, SubclassSelector] public IContainer container; void TryFire() { if(container.TryGetItem(ammo,out ammo)) { if(ammo.count>1) { Fire(); }else { Jam(); } } else { PlayVoice("没子弹了呀"); SwitchEquip("Hand"); } } } ~~~