public static void CreateSkillWarning(string path, SkillWarningType type, float data1, float data2, float duration, Vector3 pos, Quaternion rot, bool follow = false, Transform follower = null, System.Action <SkillWarning> callback = null) { ResourceSystem.LoadAsync <GameObject>(path, (o) => { GameObject go = o as GameObject; if (go == null) { return; } SkillWarning warning = go.GetComponent <SkillWarning>(); if (warning == null) { return; } GameObject obj = GameObject.Instantiate(go); if (obj == null) { return; } obj.name = "skill_warning_" + type.ToString(); warning = obj.GetComponent <SkillWarning>(); if (warning == null) { return; } warning.skillWarningType = type; warning.Data1 = data1; warning.Data2 = data2; warning.Duration = duration; warning.Follow = follow; warning.mFollower = follower; warning.mStartTime = Time.realtimeSinceStartup; obj.transform.position = pos; obj.transform.rotation = rot; warning.Decal.upHeight = 2.0f; warning.Decal.downHeight = 2.0f; warning.Decal.offsetY = 0.2f; warning.Decal.BuildMesh(); if (callback != null) { callback(warning); } }); }
// 技能图标开始拖拽(按下); private void OnSkillBtnPress(GameObject btn) { SkillBtnData data = null; if (!skillDatas.TryGetValue(btn, out data)) { return; } data.btnImage.enabled = false; data.joystickBG.SetActive(true); if (data.opType != SkillPreOpType.TargetDirLine && data.opType != SkillPreOpType.TargetDirFan && data.opType != SkillPreOpType.TargetPos) { return; } data.joystick.gameObject.SetActive(true); Vector3 touchPos = GetPointPos(); data.joystick.position = touchPos; data.startPos = new Vector2(touchPos.x, touchPos.y); Player player = GameController.mMainPlayer; if (player == null) { return; } if (data.opType == SkillPreOpType.TargetDirLine) { float dist = data.opData1 * 0.001f; float width = data.opData2 * 0.001f; SkillWarning.CreateSkillWarning("GUI/SkillWarning/Prefabs/warning_line", SkillWarningType.PreOpRect, width, dist, -1.0f, player.Position, player.transform.rotation, true, player.transform, (o) => { o.NavLayer = player.NavLayer; data.warning = o; }); } else if (data.opType == SkillPreOpType.TargetDirFan) { float dist = data.opData1 * 0.001f; float angle = (float)data.opData2; SkillWarning.CreateSkillWarning("GUI/SkillWarning/Prefabs/warning_fan", SkillWarningType.PreOpFan, dist, angle, -1.0f, player.Position, player.transform.rotation, true, player.transform, (o) => { o.NavLayer = player.NavLayer; data.warning = o; }); } else if (data.opType == SkillPreOpType.TargetPos) { float radius = data.opData2 * 0.001f; SkillWarning.CreateSkillWarning("GUI/SkillWarning/Prefabs/warning_circle", SkillWarningType.PreOpCircle, radius, radius, -1.0f, player.Position, player.transform.rotation, true, player.transform, (o) => { o.NavLayer = player.NavLayer; data.warning = o; }); } }