예제 #1
0
    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);
    }
예제 #2
0
    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);
    }
예제 #3
0
    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
    }