/// <summary> /// 检查设置 /// </summary> public void CheckDataSetting() { bool result = false; ARManager sceneARManager = GameObject.FindObjectOfType <ARManager>(); if (sceneARManager != null) { sceneARManager.ARAssetsConfig = ConfigObject; result = true; } for (int i = 0; i < TrackAssets.Count; i++) { for (int j = 0; j < TrackAssets[i].targetObjects.Count; j++) { if (TrackAssets[i].targetObjects[j].ManagerComponent == "") { TrackTarget trackObject = TrackAssets[i].targetObjects[j]; trackObject.ManagerComponent = AssetDatabase.LoadAssetAtPath <MonoScript>("Assets/Vuforia/Scripts/DefaultTrackableEventHandler.cs").GetClass().Name; //Debug.LogWarning(AssetDatabase.LoadAssetAtPath<MonoScript>("Assets/Vuforia/Scripts/DefaultTrackableEventHandler.cs").GetClass().Name); // Debug.Log(trackObject.ManagerComponent.name); TrackAssets[i].targetObjects[j] = trackObject; result = true; } } } if (result) { Debug.LogWarning("配置文件设置已更新!"); } }
public void ConfirmChanges() { if (configObject == null) { Debug.LogError("未填写配置文件"); return; } foreach (DataSetting datas in configObject.TrackAssets) { int colums = configObject.TrackAssets.IndexOf(datas); for (int i = 0; i < datas.targetObjects.Count; i++) { int row = datas.targetObjects.IndexOf(datas.targetObjects[i]); GameObject SelectionTarget = GameObject.Find(datas.targetObjects[i].id); if (SelectionTarget == null) { continue; } if (SelectionTarget.transform.childCount == 0) { continue; } GameObject prefab = SelectionTarget.transform.GetChild(0).gameObject; TrackTarget tTarget = configObject.TrackAssets[colums].targetObjects[row]; string assetPath = AssetDatabase.GetAssetPath(prefab); //Debug.LogWarning(assetPath); if (assetPath != "") { tTarget.prefab = AssetDatabase.LoadAssetAtPath <GameObject>(assetPath); } else { if (!AssetDatabase.IsValidFolder("Assets/Prefabs")) { AssetDatabase.CreateFolder("Assets", "Prefabs"); } bool result = true; PrefabUtility.SaveAsPrefabAsset(prefab, "Assets/Prefabs/" + datas.targetObjects[i].id + "_ARPrefab.prefab", out result); if (result) { tTarget.prefab = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/" + datas.targetObjects[i].id + "_ARPrefab.prefab"); } } //Debug.LogWarning(SelectionTarget.transform.GetChild(0).gameObject); tTarget.localOffset = prefab.transform.localPosition; tTarget.localRotation = prefab.transform.localRotation; tTarget.localScale = prefab.transform.localScale; configObject.TrackAssets[colums].targetObjects[row] = tTarget; } } AssetDatabase.SaveAssets(); Debug.LogWarning("保存成功"); AssetDatabase.Refresh(); GiveUpChanges(); AssetConfig.EditARAssetsAdapte(); Selection.activeObject = configObject; }
public void UpdateDataSetting(TextAsset targetXml) { List <ImageSize> list = ReadARTrackXml(targetXml.text); List <DataSetting> dTarget = new List <DataSetting>( (from DataSetting dt in TrackAssets where dt.xmlName == targetXml.name select dt)); if (dTarget.Count == 0)//不存在DataSet { DataSetting tData = new DataSetting(); tData.targetObjects = new List <TrackTarget>(); tData.xmlName = targetXml.name; //增加ImageTarget foreach (ImageSize imageSize in list) { TrackTarget tTarget = new TrackTarget(); tTarget.id = imageSize.id; tTarget.width = imageSize.size.x; tTarget.height = imageSize.size.y; tTarget.localScale = new Vector3(1.0f, 1.0f, imageSize.size.y / imageSize.size.x); tTarget.ManagerComponent = AssetDatabase.LoadAssetAtPath <MonoScript>("Assets/Vuforia/Scripts/DefaultTrackableEventHandler.cs").name; tData.targetObjects.Add(tTarget); } TrackAssets.Add(tData); } else//存在DataSet { DataSetting dataSetting = dTarget[0]; foreach (ImageSize imageSize in list) { List <TrackTarget> selectionList = new List <TrackTarget>( from TrackTarget t in dataSetting.targetObjects where t.id == imageSize.id select t); if (selectionList.Count == 0) { int dataSettingIndex = TrackAssets.IndexOf(dataSetting); TrackTarget newTrack = new TrackTarget(); newTrack.id = imageSize.id; newTrack.width = imageSize.size.x; newTrack.height = imageSize.size.y; TrackAssets[dataSettingIndex].targetObjects.Add(newTrack); } } } }
public void CreateDataSetting(TextAsset targetXml) { List <ImageSize> list = ReadARTrackXml(targetXml.text); DataSetting tData = new DataSetting(); tData.targetObjects = new List <TrackTarget>(); tData.xmlName = targetXml.name; //增加ImageTarget foreach (ImageSize imageSize in list) { TrackTarget tTarget = new TrackTarget(); tTarget.id = imageSize.id; tTarget.width = imageSize.size.x; tTarget.height = imageSize.size.y; tTarget.localScale = new Vector3(1.0f, 1.0f, imageSize.size.x / imageSize.size.y); tTarget.ManagerComponent = AssetDatabase.LoadAssetAtPath <MonoScript>("Assets/Vuforia/Scripts/DefaultTrackableEventHandler.cs").name; tData.targetObjects.Add(tTarget); } if (TrackAssets == null) { TrackAssets = new List <DataSetting>(); } TrackAssets.Add(tData); }
void Start() { tracker = GetComponent <TrackTarget>(); }