public static string GetResourcesFolderPath(bool fromAssetsDirectory = false) { SteamVR_Input_References asset = ScriptableObject.CreateInstance <SteamVR_Input_References>(); UnityEditor.MonoScript scriptAsset = UnityEditor.MonoScript.FromScriptableObject(asset); string scriptPath = UnityEditor.AssetDatabase.GetAssetPath(scriptAsset); System.IO.FileInfo fi = new System.IO.FileInfo(scriptPath); string rootPath = fi.Directory.Parent.ToString(); string resourcesPath = System.IO.Path.Combine(rootPath, "Resources"); resourcesPath = resourcesPath.Replace("//", "/"); resourcesPath = resourcesPath.Replace("\\\\", "\\"); resourcesPath = resourcesPath.Replace("\\", "/"); if (fromAssetsDirectory) { int assetsIndex = resourcesPath.IndexOf("/Assets/"); resourcesPath = resourcesPath.Substring(assetsIndex + 1); } return(resourcesPath); }
/// <summary> Sets subtitle text and tooltip for display below the main header text of MonoScript asset. </summary> /// <param name="subtitle"> [in,out] The subtitle GUContent to edit. This cannot be null. </param> /// <param name="monoScript"> The monoScript asset. </param> public static void GetHeaderSubtitle([NotNull] ref GUIContent subtitle, [NotNull] UnityEditor.MonoScript monoScript) { var classType = monoScript.GetClass(); subtitle.tooltip = "A C# MonoScript asset"; if (classType == null) { subtitle.text = "Script"; } else if (Types.MonoBehaviour.IsAssignableFrom(classType)) { subtitle.text = "MonoBehaviour Script"; } else if (Types.ScriptableObject.IsAssignableFrom(classType)) { if (Types.EditorWindow.IsAssignableFrom(classType)) { subtitle.text = "ScriptableObject Script"; } } else if (classType.IsValueType) { if (classType.IsEnum) { subtitle.text = "Enum Script"; } else { subtitle.text = "Struct Script"; } } else if (classType.IsAbstract) { if (classType.IsInterface) { subtitle.text = "Interface Script"; } else if (classType.IsStatic()) { subtitle.text = "Static Script"; } else { subtitle.text = "Abstract Script"; } } else if (classType.IsClass) { subtitle.text = "Class Script"; } else { subtitle.text = "Script"; } }
/// <summary> /// Gets the path to the source script used by the given ScriptableObject. /// WARNING: This method is meant to be used in the editor. Using it in another context will always return null. /// </summary> /// <param name="_ScriptableObjectType">The type of the ScriptableObject you want to get the script path.</param> /// <returns>Returns script path, or null if the path to the file can't be found.</returns> public static string GetScriptPath(Type _ScriptableObjectType) { #if UNITY_EDITOR ScriptableObject tmpInstance = ScriptableObject.CreateInstance(_ScriptableObjectType); UnityEditor.MonoScript sourceScriptAsset = UnityEditor.MonoScript.FromScriptableObject(tmpInstance); Object.DestroyImmediate(tmpInstance); return(UnityEditor.AssetDatabase.GetAssetPath(sourceScriptAsset)); #else return(null); #endif }
private static void SetExecutionOrder() { GameObject go = new GameObject("GO_VectorPool", new System.Type[] { typeof(VectorPoolsManager) }); UnityEditor.MonoScript monoScript = UnityEditor.MonoScript.FromMonoBehaviour(go.GetComponent <VectorPoolsManager> ()); if (UnityEditor.MonoImporter.GetExecutionOrder(monoScript) > -1000) { UnityEditor.MonoImporter.SetExecutionOrder(monoScript, -1000); } GameObject.DestroyImmediate(go); }
private void OnEnable() { script = UnityEditor.MonoScript.FromMonoBehaviour((MonoBehaviour)target); line = serializedObject.FindProperty("line"); StartWidth = serializedObject.FindProperty("StartWidth"); EndWidth = serializedObject.FindProperty("EndWidth"); startColor = serializedObject.FindProperty("startColor"); endColor = serializedObject.FindProperty("endColor"); Step = serializedObject.FindProperty("Step"); MaxSteps = serializedObject.FindProperty("MaxSteps"); Hit = serializedObject.FindProperty("HitPoint"); }
public void TraceScript() { Match regex = Regex.Match(stackTrace, @"\(at .*\.cs:[0-9]+\)$", RegexOptions.Multiline); if (regex.Success) { string line = stackTrace.Substring(regex.Index + 4, regex.Length - 5); int lineSeparator = line.IndexOf(':'); UnityEditor.MonoScript script = UnityEditor.AssetDatabase.LoadAssetAtPath <UnityEditor.MonoScript>(line.Substring(0, lineSeparator)); if (script != null) { UnityEditor.AssetDatabase.OpenAsset(script, int.Parse(line.Substring(lineSeparator + 1))); } } }
public static EditorSettings GetSettings(UnityEditor.MonoScript editorScript) { string editorPath = UnityEditor.AssetDatabase.GetAssetPath(editorScript); editorPath = System.IO.Path.GetDirectoryName(editorPath); string path = editorPath + "/EditorSettings.asset"; EditorSettings settings = UnityEditor.AssetDatabase.LoadAssetAtPath(path, typeof(EditorSettings)) as EditorSettings; if (settings == null) { settings = ScriptableObject.CreateInstance <EditorSettings>(); settings.Initialize(editorPath); UnityEditor.AssetDatabase.CreateAsset(settings, path); } return(settings); }
/// <summary> /// TreeViewControl overrides for our custom logos /// </summary> public override void AssignDefaults() { base.AssignDefaults(); var tempWwisePath = "Assets/Wwise/Editor/WwiseWindows/TreeViewControl/"; m_textureWwiseAuxBusIcon = GetTexture(tempWwisePath + "auxbus_nor.png"); m_textureWwiseBusIcon = GetTexture(tempWwisePath + "bus_nor.png"); m_textureWwiseEventIcon = GetTexture(tempWwisePath + "event_nor.png"); m_textureWwiseFolderIcon = GetTexture(tempWwisePath + "folder_nor.png"); m_textureWwisePhysicalFolderIcon = GetTexture(tempWwisePath + "physical_folder_nor.png"); m_textureWwiseProjectIcon = GetTexture(tempWwisePath + "wproj.png"); m_textureWwiseSoundbankIcon = GetTexture(tempWwisePath + "soundbank_nor.png"); m_textureWwiseStateIcon = GetTexture(tempWwisePath + "state_nor.png"); m_textureWwiseStateGroupIcon = GetTexture(tempWwisePath + "stategroup_nor.png"); m_textureWwiseSwitchIcon = GetTexture(tempWwisePath + "switch_nor.png"); m_textureWwiseSwitchGroupIcon = GetTexture(tempWwisePath + "switchgroup_nor.png"); m_textureWwiseWorkUnitIcon = GetTexture(tempWwisePath + "workunit_nor.png"); if (m_filterBoxStyle == null) { var InspectorSkin = UnityEngine.Object.Instantiate(UnityEditor.EditorGUIUtility.GetBuiltinSkin(UnityEditor.EditorSkin.Inspector)); InspectorSkin.hideFlags = UnityEngine.HideFlags.HideAndDontSave; m_filterBoxStyle = InspectorSkin.FindStyle("SearchTextField"); m_filterBoxCancelButtonStyle = InspectorSkin.FindStyle("SearchCancelButton"); } if (DragDropHelperMonoScript == null) { var scripts = UnityEngine.Resources.FindObjectsOfTypeAll <UnityEditor.MonoScript>(); for (var i = 0; i < scripts.Length; i++) { if (scripts[i].GetClass() == typeof(AkDragDropHelper)) { DragDropHelperMonoScript = scripts[i]; break; } } } }
public static string GetSteamVRFolderPath(bool localToAssetsFolder = false) { SteamVR_Settings asset = ScriptableObject.CreateInstance <SteamVR_Settings>(); UnityEditor.MonoScript scriptAsset = UnityEditor.MonoScript.FromScriptableObject(asset); string scriptPath = UnityEditor.AssetDatabase.GetAssetPath(scriptAsset); System.IO.FileInfo settingsScriptFileInfo = new System.IO.FileInfo(scriptPath); string fullPath = settingsScriptFileInfo.Directory.Parent.FullName; if (localToAssetsFolder == false) { return(fullPath); } else { System.IO.DirectoryInfo assetsDirectoryInfo = new DirectoryInfo(Application.dataPath); string localPath = fullPath.Substring(assetsDirectoryInfo.Parent.FullName.Length + 1); //plus separator char return(localPath); } }
static SirenixAssetPaths() { #if UNITY_EDITOR ProjectPathFinder finder = ScriptableObject.CreateInstance <ProjectPathFinder>(); UnityEditor.MonoScript script = UnityEditor.MonoScript.FromScriptableObject(finder); UnityEngine.Object.DestroyImmediate(finder); bool foundPath = false; if (script == null) { Debug.LogWarning("Usual method of finding Sirenix plugin path failed. Fallback to folder pattern search... (This tends to happen when reimporting the project.)"); string path = FindFolderPattern(); if (path != null) { Debug.Log("Found Sirenix plugin path: " + path); foundPath = true; SirenixPluginPath = path; } else { Debug.LogError("Could not find folder pattern, 'Sirenix/ODIN Inspector' anywhere in the project. Defaulting to path '" + DefaultSirenixPluginPath + "'. Something will probably break."); } } else { string scriptPath = UnityEditor.AssetDatabase.GetAssetPath(script); string[] pathSteps = scriptPath.Split('/', '\\');; int sirenixIndex = -1; for (int i = pathSteps.Length - 1; i >= 0; i--) { if (pathSteps[i] == "Sirenix") { sirenixIndex = i; break; } } if (sirenixIndex >= 0) { int startIndex; if (pathSteps[0] == "Assets") { startIndex = 1; } else { startIndex = 0; sirenixIndex++; } string path = string.Join("/", pathSteps, startIndex, sirenixIndex) + "/"; foundPath = true; SirenixPluginPath = path; } } if (!foundPath) { SirenixPluginPath = DefaultSirenixPluginPath; } var companyName = ToPathSafeString(UnityEditor.PlayerSettings.companyName); var productName = ToPathSafeString(UnityEditor.PlayerSettings.productName); // Temp path OdinTempPath = Path.Combine(Path.GetTempPath().Replace('\\', '/'), "Sirenix/ODIN/" + companyName + "/" + productName); #else SirenixPluginPath = DefaultSirenixPluginPath; #endif OdinPath = SirenixPluginPath + "ODIN Inspector/"; SirenixAssetsPath = SirenixPluginPath + "Assets/"; SirenixAssembliesPath = SirenixPluginPath + "Assemblies/"; //OdinGeneratedEditorsAssemblyName = "GeneratedOdinEditors"; //OdinGeneratedEditorsPath = SirenixAssembliesPath + "Editor/" + OdinGeneratedEditorsAssemblyName + ".dll"; OdinResourcesPath = OdinPath + "Config/Resources/Sirenix/"; OdinEditorConfigsPath = OdinPath + "Config/Editor/"; OdinResourcesConfigsPath = OdinResourcesPath; }
ScriptData Init_Script(UnityEditor.MonoScript script) { if (script == null) { throw new System.ArgumentNullException("Init_Script: script cannot be null"); } var scriptClass = script.GetClass(); if (scriptClass == null) { throw new System.ArgumentNullException("Init_Script: must be a monoscript with a valid class"); } ScriptData scriptData = null; if (scriptDataTable.TryGetValue(script, out scriptData)) { return(scriptData); } else { scriptData = scriptDataTable[script] = new ScriptData(); scriptData.script = script; } var fixedOrderAttribute = scriptClass.GetCustomAttributes(typeof(ScriptExecutionOrderAttribute), true) .Cast <ScriptExecutionOrderAttribute>() .FirstOrDefault(); if (fixedOrderAttribute != null) { scriptData.fixedOrderValue = fixedOrderAttribute.order; } foreach (ScriptExecuteAfterAttribute i in scriptClass.GetCustomAttributes(typeof(ScriptExecuteAfterAttribute), true)) { if (!typeLookup.TryGetValue(i.ExecuteAfter, out var j)) { continue; } var dependsOnSD = Init_Script(j); dependsOnSD.dependedOnBy.Add(scriptData); scriptData.dependsOn.Add(dependsOnSD); } foreach (ScriptExecuteBeforeAttribute i in scriptClass.GetCustomAttributes(typeof(ScriptExecuteBeforeAttribute), true)) { if (!typeLookup.TryGetValue(i.ExecuteBefore, out var j)) { continue; } var dependedOnBySD = Init_Script(j); dependedOnBySD.dependsOn.Add(scriptData); scriptData.dependedOnBy.Add(dependedOnBySD); } return(scriptData); }
public static string MonoToString(UnityEditor.MonoScript mono) { return(mono == null ? "" : TypeToString(mono.GetClass())); }
public static string GetScriptPath(ScriptableObject so) { UnityEditor.MonoScript monoScript = UnityEditor.MonoScript.FromScriptableObject(so); //Debug.LogWarning("path:" + UnityEditor.AssetDatabase.GetAssetPath(monoScript)); return(UnityEditor.AssetDatabase.GetAssetPath(monoScript)); }
public static string GetScriptPath(MonoBehaviour be) { UnityEditor.MonoScript monoScript = UnityEditor.MonoScript.FromMonoBehaviour(be); //Debug.LogWarning("path:" + UnityEditor.AssetDatabase.GetAssetPath(monoScript)); return(UnityEditor.AssetDatabase.GetAssetPath(monoScript)); }