private static UIAtlas SetAtlasInfo(GameObject go, AtlasConfig config, Material mat) { if (go == null || config == null || !config.IsUseful() || mat == null) { return(null); } TextAsset atlasTextAsset = AssetDatabase.LoadAssetAtPath <TextAsset>(config.AtlasTxtFilePath); if (atlasTextAsset != null) { UIAtlas uiAtlas = go.GetComponent <UIAtlas>(); uiAtlas.spriteMaterial = mat; if (uiAtlas.texture != null) { NGUIEditorTools.ImportTexture(uiAtlas.texture, false, false, !uiAtlas.premultipliedAlpha); } uiAtlas.MarkAsChanged(); NGUIJson.LoadSpriteData(uiAtlas, atlasTextAsset); uiAtlas.MarkAsChanged(); return(uiAtlas); } return(null); }
public static Object CreatePrefab(GameObject go, AtlasConfig config) { if (go == null || config == null || !config.IsUseful()) { return(null); } Object tmpPrefab = PrefabUtility.CreateEmptyPrefab(config.AtlasOutputPath); tmpPrefab = PrefabUtility.ReplacePrefab(go, tmpPrefab, ReplacePrefabOptions.ConnectToPrefab); Object.DestroyImmediate(go); return(tmpPrefab); }
private static void CreateAtlas(AtlasConfig config) { if (config == null) { return; } if (!config.IsUseful()) { Debug.LogError("Config :[" + config + "] Error ,Please check!!"); return; } #region 第一步:修改图片设置 TextureSetting(config.PhotoFilePath, TextureImporterType.Sprite); #endregion #region 第二步:根据图片创建材质 Material mat = AssetDatabase.LoadAssetAtPath <Material>(config.MaterialOutputPath); if (mat == null) { mat = new Material(Shader.Find("Unlit/Transparent Colored")); AssetDatabase.CreateAsset(mat, config.MaterialOutputPath); } else { mat.shader = Shader.Find("Unlit/Transparent Colored"); } mat.mainTexture = AssetDatabase.LoadAssetAtPath(config.PhotoFilePath, typeof(Texture2D)) as Texture2D; #endregion #region 第三步:创建预设 GameObject go = null; UIAtlas uiAtlas = null; if ((go = AssetDatabase.LoadAssetAtPath(config.AtlasOutputPath, typeof(GameObject)) as GameObject) != null) { //已存在预制体 uiAtlas = SetAtlasInfo(go, config, mat); } else { go = new GameObject(config.AtlasPrefabName); go.AddComponent <UIAtlas>(); uiAtlas = SetAtlasInfo(go, config, mat); CreatePrefab(go, config); } #endregion }