using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using UnityEngine; using UnityEditor; using Object = UnityEngine.Object; public class DevicesTargetCreat : EditorWindow { public Transform creatContent; public Object jsonFile; public Vector3 creatPos; [MenuItem("Plugins/DevicesTargetCreat")] static void Init() { DevicesTargetCreat DevicesTargetCreatTool = EditorWindow.CreateWindow(); DevicesTargetCreatTool.Show(); } public void OnGUI() { creatContent = (Transform)EditorGUILayout.ObjectField("容器", creatContent, typeof(Transform), true); creatPos=EditorGUILayout.Vector3Field("生成坐标", creatPos); jsonFile = Selection.activeObject; EditorGUILayout.LabelField("选中文件:"); EditorGUILayout.ObjectField(jsonFile, typeof(Object)); if (GUILayout.Button("生成参照物")) { if (jsonFile == null) { Debug.LogError("没选择Json!"); return; } string jsonStr = File.ReadAllText(AssetDatabase.GetAssetPath(jsonFile)); SensorListResult tempData = JsonUtility.FromJson(jsonStr); foreach (var t in tempData.rows) { //手动过滤下 套口 补元 if (t.stationName.Equals("套口")||!t.sensorType.Equals("温度")) { continue; } GameObject creatObj = new GameObject(); creatObj.transform.SetParent(creatContent); creatObj.transform.localPosition = creatPos; string nameHead = ""; if (t.stationName.Equals("补元")) { nameHead = "BY_"; } else { nameHead = "TK_"; } creatObj.name = $"{nameHead}{t.sensorName}"; creatObj.tag = "DeviceIconTarget"; } } } } [Serializable] public class SensorListResult { public int total; public List rows; } [Serializable] public class DevicesId_Data { public string sid; public string stationName;//站点名称? public string sensorName; public string sensorType;//设备类型? public string valueType1;//单位 public string valueType2; public string dataSid; public string dataGid; public float realtimeValue1; public string realtimeValue2; public string dataUpdateTime; public string groupId; public string groupName; }