private static async ETVoid CreateTargetArrow(Vector3 InitPos, PlayerCube playerCube, VariableJoystickComponent AttackUI, ETTaskCompletionSource <TargetArrow> tcs) { try { //创建一个TargetArrow的3D物体 GameObject resObj = await ETModel.Game.Scene.GetComponent <ResourcesAsyncComponent>().LoadAssetAsync <GameObject>(Assets.LoadAssetAsync("Assets/Bundles/Prefab/TargetArrow.prefab", typeof(GameObject))); ReferenceCollector rc = resObj.GetComponent <ReferenceCollector>(); GameObject targetArrowObj = GameObject.Instantiate <GameObject>(rc.Get <GameObject>("TargetArrow")); targetArrowObj.transform.position = InitPos; //创建TargetArrow实体脚本 TargetArrow targetArrow = ComponentFactory.Create <TargetArrow, GameObject>(targetArrowObj, false); //添加控制组件 targetArrow.AddComponent <TargetArrowComponent, PlayerCube, VariableJoystickComponent>(playerCube, AttackUI); tcs.SetResult(targetArrow); } catch (Exception e) { Log.Error(e); tcs.SetResult(null); } }
private static async ETVoid CreatePlayerCube(Vector3 InitPos, ETTaskCompletionSource <PlayerCube> tcs) { try { //创建一个cube角色的3D物体 GameObject resObj = await ETModel.Game.Scene.GetComponent <ResourcesAsyncComponent>().LoadAssetAsync <GameObject>(Assets.LoadAssetAsync("Assets/Bundles/Prefab/PlayerCube.prefab", typeof(GameObject))); ReferenceCollector rc = resObj.GetComponent <ReferenceCollector>(); GameObject playerCubeObj = GameObject.Instantiate <GameObject>(rc.Get <GameObject>("PlayerCube")); playerCubeObj.transform.position = InitPos; //创建cube角色实体脚本 PlayerCube playerCube = ComponentFactory.Create <PlayerCube, GameObject>(playerCubeObj, false); //创建控制UI UI ui = await UIJoystickFactory.Create(); Game.Scene.GetComponent <UIComponent>().Add(ui); //添加控制组件 PlayerCubeControllerComponent playerCubeControllerComponent = playerCube.AddComponent <PlayerCubeControllerComponent, UI>(ui); //创建准星控制UI UI AttackUI = await UIAttackDirstickFactory.Create(); Game.Scene.GetComponent <UIComponent>().Add(AttackUI); //创建准星3D物品 TargetArrow targetArrow = await TargetArrowFactory.Create(Vector3.zero, playerCube, AttackUI); //管理准星与cube playerCubeControllerComponent.targetArrow = targetArrow; //添加攻击脚本 playerCube.AddComponent <PlayerCubeAttackComponent>(); //添加生命值信息UI playerCube.AddComponent <PlayerCubeHealthComponent>(); //添加攻击伤害同步脚本 playerCube.AddComponent <HurtSyncComponent>(); tcs.SetResult(playerCube); } catch (Exception e) { Log.Error(e); tcs.SetResult(null); } }