2021년 4학년 1학기 기업연계프로젝트2
컴퓨터소프트웨어공학과 <원광투어팀>
팀장 : 송유진
팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using System.Collections;using System.Collections.Generic;using UnityEngine;
namespace Valve.VR.InteractionSystem{ [ExecuteInEditMode] public class TeleportURPHelper : MonoBehaviour {#if UNITY_URP && UNITY_EDITOR
void Start() { if (UnityEditor.PrefabUtility.IsPartOfPrefabInstance(this) == false) return;
string teleportAssetPath = UnityEditor.PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(this); GameObject teleportPrefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(teleportAssetPath);
Teleport teleport = teleportPrefab.GetComponent<Teleport>(); UnityEditor.SerializedObject serializedTeleport = new UnityEditor.SerializedObject(teleport); serializedTeleport.Update(); bool changed = false;
changed |= FindURPVersion(serializedTeleport, "areaHighlightedMaterial");
changed |= FindURPVersion(serializedTeleport, "areaLockedMaterial");
changed |= FindURPVersion(serializedTeleport, "areaVisibleMaterial");
changed |= FindURPVersion(serializedTeleport, "pointHighlightedMaterial");
changed |= FindURPVersion(serializedTeleport, "pointLockedMaterial");
changed |= FindURPVersion(serializedTeleport, "pointVisibleMaterial");
if (changed) { serializedTeleport.ApplyModifiedProperties(); UnityEditor.EditorUtility.SetDirty(teleport); }
TeleportArc arc = teleportPrefab.GetComponent<TeleportArc>(); UnityEditor.SerializedObject serializedArc = new UnityEditor.SerializedObject(arc); serializedArc.Update();
changed = FindURPVersion(serializedArc, "material");
if (changed) { serializedArc.ApplyModifiedProperties(); UnityEditor.EditorUtility.SetDirty(arc); }
}
private bool FindURPVersion(UnityEditor.SerializedObject teleportObject, string propertyName) { UnityEditor.SerializedProperty materialProp = teleportObject.FindProperty(propertyName); Material original = materialProp.objectReferenceValue as Material; if (original != null && !original.name.StartsWith("URP")) { string[] mats = UnityEditor.AssetDatabase.FindAssets(string.Format("URP{0} t:material", original.name)); if (mats.Length > 0) { string path = UnityEditor.AssetDatabase.GUIDToAssetPath(mats[0]); materialProp.objectReferenceValue = UnityEditor.AssetDatabase.LoadAssetAtPath<Material>(path); return true; }
}
return false; }#endif
}}
|