public static void CreateHumanIcon() { ScriptableIcon asset = ScriptableObject.CreateInstance <ScriptableIcon>(); AssetDatabase.CreateAsset(asset, "Assets/Resources/NewScriptableObject.asset"); AssetDatabase.SaveAssets(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; }
public void ShouldSetListenerIconForAsset() { var asset = CreateAsset(); var icon = new ScriptableIcon(ScriptableIconType.Listener); Assert.True(IconUtils.TrySetIcon(asset, icon)); var metaText = File.ReadAllText(AssetMetaPath); var iconGuid = GetIconGuid("IconListener"); var iconMetaText = GetIconMetaText(iconGuid); Assert.True(metaText.Contains(iconMetaText)); }
private static GUID GetIconGuid(ScriptableIcon icon) { var iconType = icon.Type; var iconPath = iconType switch { ScriptableIconType.Event => IconPathEvent, ScriptableIconType.Listener => IconPathListener, _ => string.Empty }; if (iconPath == string.Empty) { return(new GUID()); } return(AssetDatabase.GUIDFromAssetPath(iconPath)); }
/// <summary> /// Attempt to set an icon on the given object. /// </summary> internal static bool TrySetIcon(Object obj, ScriptableIcon icon) { var iconGuid = GetIconGuid(icon); if (iconGuid.Empty()) { return(false); } var metaFilePath = GetMetaFilePath(obj); if (string.IsNullOrWhiteSpace(metaFilePath)) { return(false); } var metaFileLines = File.ReadAllLines(metaFilePath); var iconGuidString = iconGuid.ToString(); var iconMeta = GetIconMetaString(iconGuidString); var isContainsMonoImporter = false; for (var index = 0; index < metaFileLines.Length; index++) { var metaFileLine = metaFileLines[index]; if (!isContainsMonoImporter && metaFileLine.Contains("MonoImporter:")) { isContainsMonoImporter = true; } if (IsIconMetaString(metaFileLine)) { if (metaFileLine.Contains(iconGuidString)) { // Icon already set. return(false); } metaFileLines[index] = iconMeta; File.WriteAllLines(metaFilePath, metaFileLines); // Icon successfully set. return(true); } } // "icon:" line did not exist in the .meta file. if (isContainsMonoImporter) { // Unsupported .meta file format. return(false); } var customMonoImporter = GetMonoImporterString(iconGuidString); File.AppendAllText(metaFilePath, Environment.NewLine + customMonoImporter); // Meta file successfully updated with the new icon. return(true); }