137 lines
3.5 KiB
C#
137 lines
3.5 KiB
C#
|
/*
|
|||
|
Creat By LuoJiasi;
|
|||
|
Plz Put in DIY File;
|
|||
|
*/
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Text;
|
|||
|
using UnityEditor;
|
|||
|
using UnityEngine;
|
|||
|
using System.Collections;
|
|||
|
using System.IO;
|
|||
|
using System;
|
|||
|
using NUnit.Framework;
|
|||
|
using Thousandto.Core.Base;
|
|||
|
using Thousandto.Code.Center;
|
|||
|
using System.Linq;
|
|||
|
using CoroutinePool = UnityEngine.Gonbest.MagicCube.CoroutinePool;
|
|||
|
|
|||
|
namespace Funcell.DIY.UniScene
|
|||
|
{
|
|||
|
public class RecordTest : EditorWindow
|
|||
|
{
|
|||
|
[MenuItem("Ares/测试工具/录制操作")]
|
|||
|
static void Init()
|
|||
|
{
|
|||
|
var win = (RecordTest)EditorWindow.GetWindow(typeof(RecordTest));
|
|||
|
win.Show();
|
|||
|
win.titleContent = new GUIContent("录制操作");
|
|||
|
}
|
|||
|
#region 配置文件
|
|||
|
protected string _now = DateTime.Now.ToString ("yyyy-MM-dd/") + DateTime.Now.ToString ("HH:mm:ss");
|
|||
|
protected string _logplace = "D:/TestCase/RecordResult.txt" ; //Log存储位置
|
|||
|
private int recordStatus = 0;
|
|||
|
|
|||
|
public List<GameObject> btnlist = new List<GameObject>();
|
|||
|
private List<GameObject> allbtnlist = new List<GameObject>();
|
|||
|
|
|||
|
//测试结果记录到txt文件中,文件地址为_logplace
|
|||
|
protected void LogTest(string resultfile)
|
|||
|
{
|
|||
|
if (!File.Exists(_logplace))
|
|||
|
{
|
|||
|
File.WriteAllText(_logplace, "[Record Start]\r\n");
|
|||
|
}
|
|||
|
File.AppendAllText(_logplace,resultfile + "\r\n");
|
|||
|
Debug.LogWarning(resultfile);
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
private void OnGUI()
|
|||
|
{
|
|||
|
if(GUILayout.Button("录制操作"))
|
|||
|
{
|
|||
|
recordStatus = 0;
|
|||
|
LogTest("【开始录制】");
|
|||
|
CoroutinePool.AddTask(AutoRecord());
|
|||
|
}
|
|||
|
|
|||
|
if(GUILayout.Button("停止录制"))
|
|||
|
{
|
|||
|
recordStatus = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
private IEnumerator AutoRecord()
|
|||
|
{
|
|||
|
while (recordStatus == 0)
|
|||
|
{
|
|||
|
GetBtn();
|
|||
|
List<GameObject> reslut = btnlist.Except(allbtnlist).ToList();
|
|||
|
if (btnlist == null)
|
|||
|
{
|
|||
|
yield return new WaitForSeconds(0.1f);
|
|||
|
}
|
|||
|
else if(reslut == null)
|
|||
|
{
|
|||
|
yield return new WaitForSeconds(0.1f);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
allbtnlist.AddRange(reslut);
|
|||
|
for (int i = 0; i < reslut.Count; i++)
|
|||
|
{
|
|||
|
UIEventListener.Get (reslut[i]).onClick += OnClick_Record;
|
|||
|
}
|
|||
|
reslut.Clear();
|
|||
|
}
|
|||
|
yield return new WaitForSeconds(0.1f);
|
|||
|
if (recordStatus == 1)
|
|||
|
{
|
|||
|
LogTest("【停止录制】");
|
|||
|
yield break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void GetBtn()
|
|||
|
{
|
|||
|
GameObject go = GameObject.Find ("UIRoot");
|
|||
|
btnlist.Clear ();
|
|||
|
foreach (UIButton obj in go.transform.GetComponentsInChildren<UIButton>())
|
|||
|
{
|
|||
|
btnlist.Add(obj.gameObject);
|
|||
|
}
|
|||
|
}
|
|||
|
private void OnClick_Record(GameObject go)
|
|||
|
{
|
|||
|
UILabel label = go.transform.GetComponentInChildren<UILabel>();
|
|||
|
if (label)
|
|||
|
{
|
|||
|
LogTest("ClickBtn," + GetBtnFullName(go) + "," + label.text + ",");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LogTest("ClickBtn," + GetBtnFullName(go) + ",");
|
|||
|
}
|
|||
|
}
|
|||
|
private string GetBtnFullName(GameObject obj)
|
|||
|
{
|
|||
|
string fullname = obj.name;
|
|||
|
GameObject pa_obj = obj.transform.parent.gameObject;
|
|||
|
for (int i = 0; i < 10; i++)
|
|||
|
{
|
|||
|
if (pa_obj.name.Contains("UIRoot"))
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
if (pa_obj.name.Contains("[Chain]"))
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
fullname = pa_obj.name + "/" + fullname;
|
|||
|
pa_obj = pa_obj.transform.parent.gameObject;
|
|||
|
}
|
|||
|
return fullname;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|