void LeftClick() { //左键单击 // CurMemInfo = null; TimeLineData data = TimeLineDataManager.Instance.GetCurSelectTimeLine(); if (data == null) { return; } data.InitDefaultTime(); Type t = data.GetType(); data.SetFieldValue(data); var memInfo = t.GetMethods(); TimeLineDataManager.Instance.memDic.Clear(); int selectKey = -1; TimeLineDataManager.Instance.curOperationAction = null; foreach (MethodInfo info in memInfo) { foreach (var item in data.GetActionDic()) { ActionItemData ad = item.Value; if (ad.IsSelect()) { foreach (var name in ad.methodNameList) { if (name == info.Name) { TimeLineDataManager.Instance.AddGUIMemInfo(info); } } //移除要操作的action 用临时变量保存 TimeLineDataManager.Instance.curOperationAction = ad.Clone(); selectKey = ad.index; } else { if (LastSelectGridY != CurSelectGridY) { //更换timeline // TimeLineDataManager.Instance.curOperationAction = null; } } } } data.DeleteAction(selectKey); }
IEnumerator PlayLine(TimeLineData data) { Type t = data.GetType(); List <string> keyList = new List <string>(); foreach (var actionPair in data.GetActionDic()) { Debug.Log("key is " + actionPair.Key); keyList.Add(actionPair.Key); } for (int i = 0; i < keyList.Count; i++) { string key = keyList[i]; if (i == 0) { ActionItemData ad = data.GetActionByKey(key); float st = ad.actionStartTime; yield return(new WaitForSeconds(st)); data.SetValueByAction(ad); foreach (var name in ad.methodNameList) { string methodName = "Execute" + name; t.InvokeMember(methodName, BindingFlags.InvokeMethod, null, data, null); } } else { string lastkey = keyList[i - 1]; ActionItemData lastad = data.GetActionByKey(lastkey); float lastst = lastad.actionStartTime; ActionItemData ad = data.GetActionByKey(key); float st = ad.actionStartTime; float time = st - lastst; Debug.Log(" time is " + time.ToString()); yield return(new WaitForSeconds(time)); data.SetValueByAction(ad); foreach (var name in ad.methodNameList) { string methodName = "Execute" + name; t.InvokeMember(methodName, BindingFlags.InvokeMethod, null, data, null); } } } }
public void SaveLineData() { TimeLineData data = TimeLineDataManager.Instance.GetCurSelectTimeLine(); if (data == null) { return; } SetAtctionParamList(data); var memDic = TimeLineDataManager.Instance.memDic; List <string> nameList = new List <string>(); foreach (var name in memDic.Keys) { nameList.Add(name); } TimeLineDataManager.Instance.SaveData(data.GetType(), nameList, actionParamList); }
void SetAtctionParamList(TimeLineData data) { Type t = data.GetType(); FieldInfo[] arr = t.GetFields(); actionParamList.Clear(); foreach (var info in arr) { if (info.IsDefined(typeof(SaveFieldAttribute), false)) { if (info.GetValue(data) != null) { actionParamList.Add(info.Name); actionParamList.Add(info.GetValue(data)); } } } }
void OnDrawCustomGUI() { Assembly assembly = Assembly.GetExecutingAssembly(); if (assembly != null) { try { Type[] timetypes = assembly.GetTypes(); for (int k = 0; k < timetypes.Length; k++) { Type t = timetypes[k]; TimeLineData curData = TimeLineDataManager.Instance.GetTimeLineByIndex(CurSelectGridY); if (curData == null) { return; } if (curData.GetType() == t) { if (IsSubClassOf(t, typeof(TimeLineData))) { var baseTarget = TimeLineDataManager.Instance.GetCurSelectTimeLine(); baseTarget.OnGUI(); foreach (var infodic in TimeLineDataManager.Instance.memDic) { var info = infodic.Value; if (info.IsDefined(typeof(GridMenuItemAttribute), false)) { var target = curData; t.InvokeMember(info.Name, BindingFlags.InvokeMethod, null, target, null); baseTarget.OnDrawDeleteButton(info); } } } } } } catch (Exception) { } } }