private void ShowCurEventWindow() { //展示窗口 if (this.curEvent == null) { return; } GUILayout.BeginVertical(); //卡卡卡卡 // Type t = EditorSkillTool.GetTypeBySEAttributeName(this.curEvent.EventName); // ISkillEventEditor obj = (ISkillEventEditor) t.Assembly.CreateInstance(t.FullName); // obj.OnGuiEditor(this.curEvent); GUILayout.Label(string.Format("正在编辑第{0}帧第{1}个事件{2}", this.curframe, this.eventIndex, this.curEvent.EventName)); ISkillEventEditor obj; if (!this.seEditorDict.TryGetValue(this.curEvent.EventName, out obj)) { Type t = EditorSkillTool.GetTypeBySEAttributeName(this.curEvent.EventName); if (t == null) { Debug.LogError("不存在" + this.curEvent.EventName + "标签对应的类"); return; } obj = (ISkillEventEditor)t.Assembly.CreateInstance(t.FullName); this.seEditorDict.Add(this.curEvent.EventName, obj); } // string str = ""; // EditorGUILayout.TextField("切换event点一下这个输入框", str, GUILayout.Width(200)); obj.OnGuiEditor(this.curEvent); GUILayout.EndVertical(); }
void SetFrame(int f, bool force = false) { if (curframe != f || force) { ani.SetPose(curAniClip, f, true); curframe = f; //动画编辑器 切换帧刷新curSkillEventList curSkillEventList = EditorSkillTool.GetCurFrameEventList(this.curframe, curSkillblock); } }
public void Show(AniPlayer ani, Skills skill) { this.skill = skill; this.ani = ani; if (this.skill.SkillList == null) { this.skill.SkillList = new List <Game.Battle.Skill.Skill>(); } //var c = ani.clips[0]; skillEditorDict = EditorSkillTool.GetSkillEditorDict(); this.Show(); }
private void EditorSkillBlock() { if (this.curblock != null) { EditorSkillTool.GetSkillEventDict(this.curblock, ref seDict); //获取当前block event组 } else { seDict.Clear(); return; } GUILayout.BeginVertical(); this.ShowCurAni(); TableToolMenu.Layout_DrawSeparator(Color.gray, 2); GUILayout.Space(10); this.ShowSkillEventWindow(); //重组 覆盖当前block的List<SkillEvent> EditorSkillTool.PushSkillEventToBlock(ref this.curblock, seDict); EditorUtility.SetDirty(this.ani); GUILayout.EndVertical(); }
private void OnGUI_DrawAniFrame() { GUILayout.Label("动画播放器:"); var ani = curAniClip; anipos = EditorGUILayout.BeginScrollView(anipos, true, false, GUILayout.Height(230)); if (curAniClip == null) { EditorGUILayout.EndScrollView(); return; } GUILayout.Label("Animation pos:(" + curframe + "/" + ani.aniFrameCount + ")"); int nf = (int)GUILayout.HorizontalScrollbar(curframe, 1, 0, ani.aniFrameCount); GUILayout.BeginHorizontal(); for (int i = 0; i < ani.aniFrameCount; i++) { var obc = GUI.backgroundColor; if (curframe == i) { GUI.backgroundColor = Color.green; } GUILayout.BeginVertical(GUILayout.Width(1)); var oc = GUI.color; string txt = "F"; if (ani.frames[i].key) { GUI.color = new Color(1.0f, 0.4f, 0.6f, 1.0f); txt = "K"; } GUILayout.Label(i.ToString()); if (GUILayout.Button(txt)) { nf = i; GUI.FocusControl("RefreshFocus"); } GUI.color = oc; List <SkillEvent> tmp = EditorSkillTool.GetCurFrameEventList(i, curSkillblock); if (tmp.Count == 0 || tmp == null) { GUILayout.Space(60); } else { GUI.color = new Color(1.0f, 1f, 0f, 1.0f); GUILayout.Space(39); if (GUILayout.Button("e")) { nf = i; GUI.FocusControl("RefreshFocus"); } } //关键帧下需要条垂直的空格 if (ani.frames[i].key) { GUILayout.Space(60); } GUI.color = oc; if (ani.frames[i].key == false) { //调整曲线 GUILayout.BeginHorizontal(); GUILayout.Space(5); float lerp = GUILayout.VerticalScrollbar(ani.frames[i].lerp, 0.01f, 1.0f, 0, GUILayout.Height(120)); if (lerp != ani.frames[i].lerp) { ani.frames[i].lerp = lerp; ani.CalcLerpFrameOne(i); if (i == curframe) { SetFrame(curframe, true); // EditorUtility.SetDirty(ani); } } GUILayout.EndHorizontal(); } //box帧按钮 string b_txt = "F"; if (ani.frames[i].box_key) { GUI.color = new Color(1.0f, 0.4f, 0.6f, 1.0f); b_txt = "K"; } if (GUILayout.Button(b_txt)) { nf = i; GUI.FocusControl("RefreshFocus"); } GUI.color = oc; string d_txt = "○"; if (ani.frames[i].dot_key) { GUI.color = new Color(1.0f, 0.4f, 0.6f, 1.0f); d_txt = "●"; } if (GUILayout.Button(d_txt)) { nf = i; GUI.FocusControl("RefreshFocus"); } GUILayout.EndVertical(); GUI.color = oc; GUI.backgroundColor = obc; } SetFrame(nf); GUILayout.EndHorizontal(); GUILayout.EndScrollView(); }
/// <summary> /// 当前技能block /// </summary> private void OnGUI_DrawSkillBlock() { GUILayout.BeginVertical(GUILayout.Width(300), GUILayout.Height(800)); GUILayout.Label("技能块列表:"); if (curSkillblockList != null) { int count = curSkillblockList.Count; for (int i = 0; i < count; i++) { GUILayout.BeginVertical(); if (curSkillblockIndex == i) { GUI.color = Color.green; } else { GUI.color = Color.white; } var sb = this.curSkillblockList[i]; GUILayout.BeginHorizontal(); if (GUILayout.Button(string.Format("[{0}] -" + sb.AniName, i))) { curSkillblockIndex = i; curAniClip = ani.GetClip(sb.AniName); curSkillblock = sb; curSkillEventList = EditorSkillTool.GetCurFrameEventList(this.curframe, curSkillblock); curSkillEvnetIndex = -1; curSkillEventEditor = null; GUI.FocusControl("RefreshFocus"); } GUI.color = GUI.backgroundColor; if (GUILayout.Button("DEL", GUILayout.Width(35))) { this.curSkillblockList.Remove(sb); count = curSkillblockList.Count; curSkillblockIndex = -1; curSkillblock = null; curSkillEventList = null; curSkillEvnetIndex = -1; curAniClip = null; curSkillEventEditor = null; GUI.FocusControl("RefreshFocus"); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); } } GUILayout.Space(20); if (curSkillblockList != null) { if (GUILayout.Button("创建skillBlock")) { Window_SelectAniClip window = (Window_SelectAniClip)EditorWindow.GetWindow(typeof(Window_SelectAniClip), false, "SelectAniClip"); window.Show(this.curSkillblockList, this.ani); } } GUILayout.EndVertical(); TableToolMenu.Layout_DrawSeparatorV(Color.gray, 2); }
private void ShowBlockList(List <SkillBlock> blocks) { int count = blocks.Count; if (count == 0) { curblock = null; if (GUILayout.Button("新建一个Block", GUILayout.Width(300))) { Window_SelectAniClip window = (Window_SelectAniClip)EditorWindow.GetWindow(typeof(Window_SelectAniClip), false, "SelectAniClip"); window.Show(blocks, 0, this.ani); } } else { for (int i = 0; i < count; i++) { SkillBlock sb = blocks[i]; if (!EditorSkillTool.CheckAniExist(this.ani.clips, sb.AniName)) { GUIStyle titleStyle2 = new GUIStyle(); titleStyle2.normal.textColor = new Color(1, 0, 0, 1); GUILayout.Label("ani不存在动作:" + sb.AniName, titleStyle2); } GUILayout.BeginHorizontal(GUILayout.Width(300)); if (this.blockIndex == i) { GUI.color = Color.green; curblock = sb; } else { GUI.color = Color.white; } if (GUILayout.Button(sb.AniName + " index:" + i)) { blockIndex = i; curblock = sb; eventIndex = 0; curEvent = null; GUI.FocusControl("RefreshFocus"); } GUI.color = GUI.backgroundColor; if (GUILayout.Button("add", GUILayout.Width(50))) { Window_SelectAniClip window = (Window_SelectAniClip)EditorWindow.GetWindow(typeof(Window_SelectAniClip), false, "SelectAniClip"); window.Show(blocks, i + 1, this.ani); } if (GUILayout.Button("del", GUILayout.Width(50))) { blocks.Remove(sb); count = blocks.Count; if (blockIndex == i) { curblock = null; blockIndex = 0; } else if (blockIndex > i) { blockIndex--; } } GUILayout.EndHorizontal(); } } }