/// <summary> #region 启动热更逻辑 /// <summary> /// 初始化 /// 修改版本,让这个启动逻辑由使用者自行处理 /// </summary> /// <param name="mainProjectTypes">Editor模式下,UPM隔离了DLL需要手动传入</param> /// <param name="GameId">单游戏更新启动不需要id,多游戏更新需要id号</param> public void Launch(Type[] mainProjectTypes, Action <bool> clrBindingAction, string gameId = "default") { BDebug.Log("Persistent:" + Application.persistentDataPath); BDebug.Log("StreamingAsset:" + Application.streamingAssetsPath); //主工程启动 IGameStart mainStart; foreach (var type in mainProjectTypes) { if (type.GetInterface(nameof(IGameStart)) != null) { mainStart = Activator.CreateInstance(type) as IGameStart; //注册 mainStart.Start(); OnUpdate += mainStart.Update; OnLateUpdate += mainStart.LateUpdate; break; } } //开始资源检测 AssetHelper.AssetHelper.CheckAssetPackageVersion(Application.platform, () => { //1.美术目录 BResources.Load(GameConfig.ArtRoot, GameConfig.CustomArtRoot); //2.sql SqliteLoder.Load(GameConfig.SQLRoot); //3.脚本,这个启动会开启所有的逻辑 ScriptLoder.Load(GameConfig.CodeRoot, GameConfig.CodeRunMode, mainProjectTypes, clrBindingAction); }); }
static public void InitEditorFrame() { //BD生命周期启动 BDApplication.Init(); BDFrameEditorConfigHelper.Init(); //编辑器下加载初始化 BResources.Load(AssetLoadPath.Editor); }
static public void LoadSameNameAsset() { //同个目录 var o = BResources.Load <GameObject>("AssetTest/Cube"); var mat = BResources.Load <Material>("AssetTest/Cube"); Assert.IsPass(o != null && mat != null, "加载同名文件失败!"); }
static public void Load() { //同个目录 var o = BResources.Load <GameObject>("AssetTest/Cube"); o = BResources.Load <GameObject>("AssetTest/Particle"); //不同的runtime目录 o = BResources.Load <GameObject>("CubeSVN"); }
public static void ChangeToGray(this Image img) { Material material = BResources.Load <Material>("Shader/UI_Gary") as Material; if (img != null && material != null) { img.material = material; } }
private void btn_06() { List <GameObject> golist = new List <GameObject>(); //1.同步加载 var go = BResources.Load <GameObject>("AssetTest/Cube"); var load1 = GameObject.Instantiate(go); go = BResources.Load <GameObject>("Test/Cube"); var load2 = GameObject.Instantiate(go); go = BResources.Load <GameObject>("AssetTest/Particle"); var load3 = GameObject.Instantiate(go); go = BResources.Load <GameObject>("Char/001"); var loadModel = GameObject.Instantiate(go); golist.Add(load1); golist.Add(load2); golist.Add(load3); golist.Add(loadModel); //2.异步加载单个 var id = BResources.AsyncLoad <GameObject>("Test/Cube", (o) => { var load4 = GameObject.Instantiate(o); golist.Add(load4); }); //3.异步加载多个 var list = new List <string>() { "AssetTest/Cube", "Test/Cube" }; BResources.AsyncLoad(list, (i, i2) => { //进度 Debug.Log(string.Format("进度 {0} / {1}", i, i2)); }, (map) => { BDebug.Log("加载全部完成,资源列表:"); foreach (var r in map) { BDebug.Log(string.Format("--> {0} : {1}", r.Key, r.Value.name)); var _go = GameObject.Instantiate(r.Value); golist.Add(_go as GameObject); } }); IEnumeratorTool.WaitingForExec(5, () => { foreach (var _go in golist) { GameObject.Destroy(_go); } }); }
public void Init() { var o = BResources.Load <GameObject>(data.ResurcePath); this.Trans = GameObject.Instantiate(o).transform; this.Trans.SetParent(Client.SceneRoot, false); // this.AniPlayer = this.Trans.GetComponent <AniPlayer>(); this.SkillPlayer = this.Trans.GetComponent <SkillPlayer_TBS>(); }
/// <summary> /// 初始化框架编辑器 /// </summary> static public void InitFrameEditor() { //BD生命周期启动 BDApplication.Init(); BDFrameEditorConfigHelper.Init(); //编辑器下加载初始化 BResources.Load(AssetLoadPath.Editor); //初始化DLL var gAssembly = Assembly.LoadFile(BDApplication.Library + "/ScriptAssemblies/Assembly-CSharp.dll"); var eAssemlby = Assembly.LoadFile(BDApplication.Library + "/ScriptAssemblies/Assembly-CSharp-Editor.dll"); RegisterMainProjectAssembly(gAssembly, eAssemlby); }
public void Do(IBattle battle, IHeroFSM selfFSM, IHeroFSM targetFSM) { var o = BResources.Load <GameObject>(this.se.StrParam0); effect = GameObject.Instantiate(o).transform; //在敌方阵营的特效 需要旋转 //父节点 Transform parent = null; if (se.DoubleParams0 == 1) //单体 { if (targetFSM.Camp == 2) { effect.eulerAngles = new Vector3(0, 180, 0); } parent = battle.World.GetPlayerRootTransform(targetFSM.ID); } else if (se.DoubleParams0 == 2) { parent = battle.World.GetPlayerRootTransform(targetFSM.Camp); } else if (se.DoubleParams0 == 3) //连接 { parent = battle.World.GetPlayerRootTransform(selfFSM.Camp); var mypos = battle.World.GetPlayerPos(selfFSM.ID); var tarpos = battle.World.GetPlayerPos(targetFSM.ID); //TODO 求两个向量夹角 var v1 = new Vector2(mypos.x, mypos.z); var v2 = new Vector2(tarpos.x, tarpos.z); var dir = (v2 - v1).normalized; effect.LookAt(dir); // float angle = Vector3.Angle(mypos, tarpos); // effect.eulerAngles += new Vector3(0,angle,0); } effect.SetParent(parent, false); if (se.DoubleParams1 > 0) { IEnumeratorTool.WaitingForExec((float)se.DoubleParams1, () => { BResources.Destroy(effect); }); } }
static public int PlayEffectLooped(string name, Vector3 pos, int dir = -1, Transform follow = null) { effectCount++; var o = GameObject.Instantiate(BResources.Load <GameObject>(name)); effectMap[effectCount] = o.transform; if (follow != null) { o.transform.SetParent(follow, false); o.transform.localPosition = Vector3.zero; } return(effectCount); }
/// <summary> /// 初始化 /// 修改版本,让这个启动逻辑由使用者自行处理 /// </summary> /// <param name="GameId">单游戏更新启动不需要id,多游戏更新需要id号</param> public void Launch(string GameId = "") { BDebug.Log("Persistent:" + Application.persistentDataPath); BDebug.Log("StreamingAsset:" + Application.streamingAssetsPath); //开始资源检测 AssetHelper.AssetHelper.CheckAssetPackageVersion(Application.platform, () => { //1.美术目录 BResources.Load(GameConfig.ArtRoot, GameConfig.CustomArtRoot); //2.sql SqliteLoder.Load(GameConfig.SQLRoot); //3.脚本,这个启动会开启所有的逻辑 ScriptLoder.Load(GameConfig.CodeRoot, GameConfig.CodeRunMode); }); }
static StackObject *Load_5(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj) { ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain; StackObject *ptr_of_this_method; StackObject *__ret = ILIntepreter.Minus(__esp, 1); ptr_of_this_method = ILIntepreter.Minus(__esp, 1); System.String @name = (System.String) typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); var result_of_this_method = BResources.Load <UnityEngine.Sprite>(@name); return(ILIntepreter.PushObject(__ret, __mStack, result_of_this_method)); }
public void Load() { //重置pos this.playersPos = new List <Vector3>(); //加载场景 var o = GameObject.Instantiate(BResources.Load <GameObject>(this.path)); this.Transform = o.transform; this.Transform.SetParent(Client.SceneRoot, false); var playesPosTrans = this.Transform.Find("PlayerPos"); foreach (Transform p in playesPosTrans) { this.playersPos.Add(p.position); } }
/// <summary> /// 同步加载 /// </summary> public void Load() { var o = BResources.Load <GameObject>(resourcePath); if (o == null) { Debug.LogError("窗口资源不存在:" + resourcePath); return; } var go = GameObject.Instantiate(o); Transform = go.transform; Transform.gameObject.SetActive(false); // ClientMain.AddToUIRoot(Transform); IsLoad = true; Init(); }
/// <summary> /// 初始化框架编辑器 /// </summary> static public void InitBDFrameworkEditor() { //BD生命周期启动 BDApplication.Init(); BDEditorApplication.Init(); //编辑器下加载初始化 BResources.Load(AssetLoadPath.Editor); //加载主工程的DLL Type var assemblyPath = BDApplication.Library + "/ScriptAssemblies/Assembly-CSharp.dll"; var editorAssemlyPath = BDApplication.Library + "/ScriptAssemblies/Assembly-CSharp-Editor.dll"; if (File.Exists(assemblyPath) && File.Exists(editorAssemlyPath)) { var gAssembly = Assembly.LoadFile(assemblyPath); var eAssemlby = Assembly.LoadFile(editorAssemlyPath); RegisterMainProjectAssembly(gAssembly, eAssemlby); } }
static public void InitBDEditorLife() { //Editor的管理器初始化 RegisterEditorMgrInstance(); //BD生命周期启动 BDFrameEditorBehaviorHelper.Init(); BDFrameEditorConfigHelper.Init(); BDApplication.Init(); //编辑器下加载初始化 BResources.Load(AssetLoadPath.Editor); //调试器启动 DebuggerServerProcessManager.Inst.Start(); //TODO //这一行还是不能加到框架层,应该还是:哪里用 哪里主动load, //然后用完了close(SqliteLoder.Close())。 //不然sql文件editor环境下一直被占用,很多麻烦事 // SqliteLoder.Load(Application.streamingAssetsPath); }
public void SetValue(object newObj) { if (newObj == null) { return; } if (componentAttr.CustomField != CustomField.Null) //先处理自定义的值 { switch (componentAttr.CustomField) { case CustomField.ResourcePath: if (componentAttr.ComponentType == ComponentType.Image) { if (value != null && value.ToString() == newObj.ToString()) { break; } var c = component as Image; c.sprite = BResources.Load <Sprite>(newObj.ToString()); this.value = newObj; } break; case CustomField.GameObjectActive: { component.gameObject.SetActive((bool)newObj); this.value = newObj; } break; case CustomField.ComponentEnable: { component.enabled = ((bool)newObj); this.value = newObj; } break; } } else { SetComponentValue(typesMap[componentAttr.ComponentType], componentAttr.ComponentField, this.component, newObj); } }
static public void BDEditorInit() { #region 注册所以管理器,让管理器在编辑器下生效 //项目所有类 var types = typeof(BDLauncher).Assembly.GetTypes().ToList(); //编辑器所有类 var editorTypes = typeof(BDEditorMenuEnum).Assembly.GetTypes(); types.AddRange(editorTypes); List <IMgr> mgrs = new List <IMgr>(); foreach (var t in types) { if (t != null && t.BaseType != null && t.BaseType.FullName != null && t.BaseType.FullName.Contains(".ManagerBase`2")) { var i = t.BaseType.GetProperty("Inst").GetValue(null, null) as IMgr; mgrs.Add(i); continue; } } foreach (var t in types) { foreach (var mgr in mgrs) { mgr.CheckType(t); } } Debug.Log("BDFrameEditor:管理器注册完成"); #endregion BApplication.Init(); DebuggerServerProcessManager.Inst.Start(); BDEditorHelper.Init(); BResources.Load(""); //TODO //这一行还是不能加到框架层,应该还是:哪里用 哪里主动load, //然后用完了close(SqliteLoder.Close())。 //不然sql文件editor环境下一直被占用,很多麻烦事 // SqliteLoder.Load(Application.streamingAssetsPath); }
// /// <summary> /// 同步加载 /// </summary> public void Load() { var o = BResources.Load <GameObject>(resourcePath); if (o == null) { Debug.LogError("窗口资源不存在:" + resourcePath); return; } var go = GameObject.Instantiate(o); Transform = go.transform; Transform.gameObject.SetActive(false); IsLoad = true; //自动查找节点 UITools.AutoSetTransformPath(this); Init(); }
/// <summary> /// Sets the value. /// </summary> /// <param name="o">O.</param> public void SetValue(object o) { if (o == null) { return; } // 先处理自定义的值 if (componentAttribute.CustemField != CustemField.Null) { switch (componentAttribute.CustemField) { case CustemField.ResourcesPath: if (componentAttribute.ComponentType == ComponentType.Image) { if (value != null && value.ToString() == o.ToString()) { break; } var c = this.component as Image; c.sprite = BResources.Load <Sprite>(o.ToString()); this.value = o; } break; case CustemField.GameObjectActive: this.component.gameObject.SetActive((bool)o); this.value = o; break; case CustemField.ComponentEnable: this.component.enabled = ((bool)o); this.value = o; break; } } else { SetComponentValue(typesMap[componentAttribute.ComponentType], componentAttribute.ComponentField, component, o); } }
static public void BDEditorInit() { #region 注册所以管理器,让管理器在编辑器下生效 //项目所有类 var types = typeof(BDLauncher).Assembly.GetTypes().ToList(); //编辑器所有类 var editorTypes = typeof(BDEditorMenuEnum).Assembly.GetTypes(); types.AddRange(editorTypes); List <IMgr> mgrs = new List <IMgr>(); foreach (var t in types) { if (t != null && t.BaseType != null && t.BaseType.FullName != null && t.BaseType.FullName.Contains(".ManagerBase`2")) { var i = t.BaseType.GetProperty("Inst").GetValue(null, null) as IMgr; mgrs.Add(i); continue; } } foreach (var t in types) { foreach (var mgr in mgrs) { mgr.CheckType(t); } } Debug.Log("BDFrameEditor:管理器注册完成"); #endregion DebuggerServerProcessManager.Inst.Start(); BDEditorHelper.Init(); BResources.Load(""); }
public void Load() { //重置pos this.playersPos = new List <Vector3>(); //加载场景 var o = GameObject.Instantiate(BResources.Load <GameObject>(this.path)); this.Transform = o.transform; this.Transform.SetParent(Client.SceneRoot, false); var playesPosTrans = this.Transform.Find("PlayerPos"); if (playesPosTrans != null) { foreach (Transform t in playesPosTrans) { this.playersPos.Add(t.position); palyersPosTransformList.Add(t); } } else { Debug.LogError("该场景没有指定【玩家坐标点】,请速速添加~"); } var campCenterTrans = this.Transform.Find("CampCenter"); if (campCenterTrans != null) { foreach (Transform t in campCenterTrans) { campCenterTransformList.Add(t); } } else { Debug.LogError("该场景没有指定【队伍中心点】,请速速添加~"); } }
public override void Init() { Transform canvasTrans = GameObject.Find("Canvas").transform; BResources.Load(""); GameObject go = BResources.Load <GameObject>("UITools"); go = GameObject.Instantiate(go); go.transform.SetParent(canvasTrans, false); BDebug.Log(canvasTrans); var tools = new ToolsData() { tx_Item = "lizhi", tx_Icon = "24", }; UITools.AutoSetComValue(go.transform, tools); var subWindow = new SubWindow_Logo(canvasTrans.Find("GameObject")); subWindow.Init(); this.AddSubwindow("logo", subWindow); var data = new Data { name = "lizhi", age = 24, }; var windowData = new WindowData(); windowData.AddData("logo", data); this.OpenSubwindow("logo", windowData); }
/// <summary> /// 初始化 /// 修改版本,让这个启动逻辑由使用者自行处理 /// </summary> /// <param name="GameId">单游戏更新启动不需要id,多游戏更新需要id号</param> public void Launch(string GameId = "") { //初始化资源加载 string coderoot = ""; string sqlroot = ""; string artroot = ""; //各自的路径 //art if (Config.ArtRoot == AssetLoadPath.Editor) { if (Application.isEditor) { //默认不走AssetBundle artroot = ""; } else { //手机默认直接读取Assetbundle artroot = Application.persistentDataPath; } } else if (Config.ArtRoot == AssetLoadPath.Persistent) { artroot = Application.persistentDataPath; } else if (Config.ArtRoot == AssetLoadPath.StreamingAsset) { if (string.IsNullOrEmpty(Config.CustomArtRoot) == false) { artroot = Config.CustomArtRoot; } else { artroot = Application.streamingAssetsPath; } } //sql if (Config.SQLRoot == AssetLoadPath.Editor) { //sql 默认读streaming sqlroot = Application.streamingAssetsPath; } else if (Config.SQLRoot == AssetLoadPath.Persistent) { sqlroot = Application.persistentDataPath; } else if (Config.SQLRoot == AssetLoadPath.StreamingAsset) { sqlroot = Application.streamingAssetsPath; } //code if (Config.CodeRoot == AssetLoadPath.Editor) { //sql 默认读streaming coderoot = ""; } else if (Config.CodeRoot == AssetLoadPath.Persistent) { coderoot = Application.persistentDataPath; } else if (Config.CodeRoot == AssetLoadPath.StreamingAsset) { coderoot = Application.streamingAssetsPath; } //多游戏更新逻辑 if (Application.isEditor == false) { if (GameId != "") { artroot = artroot + "/" + GameId; coderoot = coderoot + "/" + GameId; sqlroot = sqlroot + "/" + GameId; } } //异步 BResources.Load(artroot, () => { //sql SqliteLoder.Load(sqlroot); //异步 这里如果代码很早的时候就开始走表格逻辑,有可能报错, //但是大部分游戏应该不会,三层回调太丑,暂时用这个 ScriptLoder.Load(coderoot, Config.CodeRunMode); }); if (OnBDFrameLaunch != null) { OnBDFrameLaunch(); } }
public override void Init() { base.Init(); //提示 var isCodeHotfix = GameObject.Find("BDFrame").GetComponent <BDLauncher>().IsCodeHotfix; text_hotfixState.text = isCodeHotfix ? "热更模式:开" : "热更模式:关"; //demo1: screenview 切换 this.btn_01.onClick.AddListener(() => { ScreenViewManager.Inst.MainLayer.BeginNavTo("demo1"); }); //demo2: ui window基本操作 this.btn_02.onClick.AddListener(() => { ScreenViewManager.Inst.MainLayer.BeginNavTo("demo2"); //向demo2窗口发消息 var d = WindowData.Create(); d.AddData("rotation", UnityEngine.Random.Range(-359, 359)); UIManager.Inst.SendMessage((int)WinEnum.Win_Demo2, d); }); //demo3: uimvc模式 this.btn_03.onClick.AddListener(() => { ScreenViewManager.Inst.MainLayer.BeginNavTo("demo3"); }); //demo4: uitools使用 this.btn_04.onClick.AddListener(() => { UIManager.Inst.LoadWindows((int)WinEnum.Win_Demo4); UIManager.Inst.ShowWindow((int)WinEnum.Win_Demo4); }); //demo5: sqlite 查询 this.btn_05.onClick.AddListener(() => { var ds = SqliteHelper.DB.GetTableRuntime().Where("id > 1").ToSearch <Hero>(); foreach (var d in ds) { Debug.Log(JsonMapper.ToJson(d)); } }); //demo6:资源加载 this.btn_06.onClick.AddListener(() => { //1.同步加载 var go = BResources.Load <GameObject>("Windows/window_demo1"); //2.异步加载单个 var id = BResources.AsyncLoad <GameObject>("Windows/window_demo1", (b, o) => { }); // //取消任务 // BResources.LoadCancel(id);6 // // //3.异步加载多个 BResources.AsyncLoad(new List <string>() { "Windows/window_demo1", "Windows/window_demo2" }, (i, i2) => { Debug.Log(string.Format("进度 {0} / {1}", i, i2)); }, (map) => { BDebug.Log("加载全部完成,资源列表:"); foreach (var r in map) { BDebug.Log(string.Format("--> {0} : {1}", r.Key, r.Value.name)); GameObject.Instantiate(r.Value); } }); }); this.btn_07.onClick.AddListener(() => { var path = Application.streamingAssetsPath; var t = VersionContorller.Start("http://127.0.0.1", path, (i, j) => { Debug.LogFormat("资源更新进度:{0}/{1}", i, j); }, (error) => { Debug.LogError("错误:" + error); }); //var result = t.Result; Debug.Log("下载状态返回:"); }); }
/// <summary> /// 初始化 /// 修改版本,让这个启动逻辑由使用者自行处理 /// </summary> /// <param name="GameId">单游戏更新启动不需要id,多游戏更新需要id号</param> public void Launch(string GameId = "") { //初始化资源加载 string coderoot = ""; string sqlroot = ""; string artroot = ""; //各自的路径 //art if (ArtRoot == AssetLoadPath.Editor) { if (Application.isEditor) { //默认不走AssetBundle artroot = ""; } else { //手机默认直接读取Assetbundle artroot = Application.persistentDataPath; } } else if (ArtRoot == AssetLoadPath.Persistent) { artroot = Application.persistentDataPath; } else if (ArtRoot == AssetLoadPath.StreamingAsset) { artroot = Application.streamingAssetsPath; } //sql if (SQLRoot == AssetLoadPath.Editor) { //sql 默认读streaming sqlroot = Application.streamingAssetsPath; } else if (SQLRoot == AssetLoadPath.Persistent) { sqlroot = Application.persistentDataPath; } else if (SQLRoot == AssetLoadPath.StreamingAsset) { sqlroot = Application.streamingAssetsPath; } //code if (CodeRoot == AssetLoadPath.Editor) { //sql 默认读streaming coderoot = ""; } else if (CodeRoot == AssetLoadPath.Persistent) { coderoot = Application.persistentDataPath; } else if (CodeRoot == AssetLoadPath.StreamingAsset) { coderoot = Application.streamingAssetsPath; } //多游戏更新逻辑 if (Application.isEditor == false) { if (GameId != "") { artroot = artroot + "/" + GameId; coderoot = coderoot + "/" + GameId; sqlroot = sqlroot + "/" + GameId; } } //sql SqliteLoder.Load(sqlroot); //art BResources.Load(artroot); //code LoadScrpit(coderoot); }
static public void Register() { BResources.Load(); }
/// <summary> /// 加载接口 /// </summary> /// <param name="path"></param> /// <typeparam name="T"></typeparam> static public T Load <T>(string path) where T : Object { return(BResources.Load <T>(path)); }
static public void Register() { //这里开启Assetbundle模式 BResources.Load(AssetLoadPath.StreamingAsset); }
public override void Init() { base.Init(); //提示 // var isCodeHotfix = GameObject.Find("BDFrame").GetComponent<BDLauncher>().IsCodeHotfix; // text_hotfixState.text = isCodeHotfix ? "热更模式:开" : "热更模式:关"; //demo1: screenview 切换 //代码: //Game@hotfix/demo1 this.btn_01.onClick.AddListener(() => { ScreenViewManager.Inst.MainLayer.BeginNavTo("demo1"); }); //demo2: ui window基本操作 //代码: //Game@hotfix/demo2 this.btn_02.onClick.AddListener(() => { ScreenViewManager.Inst.MainLayer.BeginNavTo("demo2"); //向demo2窗口发消息 var d = WindowData.Create("rotation"); d.AddData("rotation", UnityEngine.Random.Range(-359, 359)); UIManager.Inst.SendMessage((int)WinEnum.Win_Demo2, d); }); //demo3: uimvc模式 //代码: //Game@hotfix/demo3 this.btn_03.onClick.AddListener(() => { ScreenViewManager.Inst.MainLayer.BeginNavTo("demo3"); }); //demo4: uitools使用 //代码: //Game@hotfix/demo4 this.btn_04.onClick.AddListener(() => { UIManager.Inst.LoadWindows((int)WinEnum.Win_Demo4); UIManager.Inst.ShowWindow((int)WinEnum.Win_Demo4); }); //demo5: sqlite 查询 this.btn_05.onClick.AddListener(() => { var ds = SqliteHelper.DB.GetTableRuntime().Where("id > 1").ToSearch <Hero>(); foreach (var d in ds) { Debug.Log(JsonMapper.ToJson(d)); } }); //demo6:资源加载 this.btn_06.onClick.AddListener(() => { //1.同步加载 var go = BResources.Load <GameObject>("Windows/window_demo1"); //2.异步加载单个 var id = BResources.AsyncLoad <GameObject>("Windows/window_demo1", (o) => { }); //3.异步加载多个 var list = new List <string>() { "Windows/window_demo1", "Windows/window_demo2" }; BResources.AsyncLoad(list, (i, i2) => { Debug.Log(string.Format("进度 {0} / {1}", i, i2)); }, (map) => { BDebug.Log("加载全部完成,资源列表:"); foreach (var r in map) { BDebug.Log(string.Format("--> {0} : {1}", r.Key, r.Value.name)); GameObject.Instantiate(r.Value); } }); }); //代码: //Game@hotfix/demo_Manager_AutoRegister_And_Event this.btn_07.onClick.AddListener(() => { var path = Application.persistentDataPath; VersionContorller.Start(UpdateMode.Repair, "http://127.0.0.1", path, (i, j) => { Debug.LogFormat("资源更新进度:{0}/{1}", i, j); }, (error) => { Debug.LogError("错误:" + error); }); }); //发送消息机制 this.btn_08.onClick.AddListener(() => { DemoEventManager.Inst.Do(DemoEventEnum.TestEvent2); }); }