예제 #1
0
    void SetProjectSetting(Project project)
    {
        PlayerSettings.companyName = project.CompanyName;
        PlayerSettings.productName = project.ProjectName;

        Texture2D tx = AssetDatabase.LoadAssetAtPath <Texture2D>(project.IconName);///tx = ("Assets/ArtWork/app_icon_360");

        int[]       iconSize     = PlayerSettings.GetIconSizesForTargetGroup(BuildTargetGroup.Android);
        Texture2D[] textureArray = new Texture2D[iconSize.Length];
        for (int i = 0; i < textureArray.Length; i++)
        {
            textureArray[i] = tx;
        }
        textureArray[0] = tx;
        PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.Android, textureArray);
        AssetDatabase.SaveAssets();
        PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, project.PackageName);
        //PlayerSettings.applicationIdentifier = project.PackageName;
        PlayerSettings.bundleVersion             = project.Version;
        PlayerSettings.Android.bundleVersionCode = int.Parse(project.BundleVersionCode);

        //PlayerSettings.Android.keystoreName = project.KeystorePath;
        //PlayerSettings.Android.keyaliasName = project.KeyaliasName;
        //PlayerSettings.Android.keystorePass = project.KeystorePass;
        //PlayerSettings.Android.keyaliasPass = project.KeyaliasPass;

        PlayerSettings.Android.minSdkVersion    = AndroidSdkVersions.AndroidApiLevel18;
        PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevel22;

        AssetDatabase.Refresh();
        AssetDatabase.SaveAssets();
    }
예제 #2
0
        private void Validate()
        {
            int[] sizes = PlayerSettings.GetIconSizesForTargetGroup(BuildIcons.TargetGroup, BuildIcons.IconKind);

            if (BuildIcons.Icons.Length != sizes.Length)
            {
                Debug.LogError(string.Format("Icons length '{0}' is not equal target group sizes length '{1}'.", BuildIcons.Icons.Length, sizes.Length));
                return;
            }

            for (int i = 0; i < BuildIcons.Icons.Length; i++)
            {
                Texture2D icon = BuildIcons.Icons[i];
                if (icon != null)
                {
                    if (icon.width != icon.height)
                    {
                        Debug.LogError(string.Format("Icon '{0}' width ({1}) and height ({2}) is not equal", icon.name, icon.width, icon.height));
                    }

                    if (sizes[i] != icon.width)
                    {
                        Debug.LogError(string.Format("Icon '{0}' size ({1}) is not equal to required size ({2})", icon.name, icon.width, sizes[i]));
                    }
                }
            }
        }
예제 #3
0
    static void SetIcons(string Icon_Path)//设置Icon
    {
        if (!File.Exists(Icon_Path))
        {
            Icon_Path = @"Assets\Icon.jpg";
            if (!File.Exists(Icon_Path))
            {
                EditorUtility.DisplayDialog("错误!!!", "没有找到该项目Icon", "确定");
                Pass = false;
            }
        }
        string iconPrefixName = "Icon";

        //获取所有的Icon尺寸
        int[]       iconSizes = PlayerSettings.GetIconSizesForTargetGroup(BuildTargetGroup.Android);
        Texture2D[] texArray  = new Texture2D[iconSizes.Length];
        for (int i = 0; i < iconSizes.Length; ++i)
        {
            int iconSize = iconSizes[i];
            //获得对应目录下的Icon,并转换成Texture2D
            Texture2D tex2D = AssetDatabase.LoadAssetAtPath(string.Format(Icon_Path, iconPrefixName, iconSize),
                                                            typeof(Texture2D)) as Texture2D;
            texArray[i] = tex2D;
        }
        //设置到PlayerSettings的各个Icon上
        PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.Android, texArray);
        AssetDatabase.SaveAssets();
    }
예제 #4
0
        public static void SetAppIcon(BuildTargetGroup group, Texture2D texture)
        {
            var count = PlayerSettings.GetIconSizesForTargetGroup(group).Length;

            var textures = new List <Texture2D>();

            for (int i = 0; i < count; i++)
            {
                textures.Add(texture);
            }
            PlayerSettings.SetIconsForTargetGroup(group, textures.ToArray());
        }
예제 #5
0
    /// <summary>
    /// Icon設定
    /// </summary>
    private void UIAndroidIcon()
    {
        mShowSetInfo.AndroidSet.IconSetStatus = EditorGUILayout.ToggleLeft(SDBaseType.cUIName034, mShowSetInfo.AndroidSet.IconSetStatus);
        if (!mShowSetInfo.AndroidSet.IconSetStatus)
        {
            return;
        }

        EditorGUILayout.Space();
        EditorGUI.indentLevel++;

        mShowSetInfo.AndroidSet.IconOverride = EditorGUILayout.ToggleLeft(SDBaseType.cUIName035, mShowSetInfo.AndroidSet.IconOverride);
        if (mShowSetInfo.AndroidSet.IconOverride)
        {
            EditorGUI.indentLevel++;

            int[] aAndroidIconTexts = PlayerSettings.GetIconSizesForTargetGroup(BuildTargetGroup.Android);
            for (int i = 0; i < mUIUseImages.AndroidIcons.Length; i++)
            {
                string aPicSize = "";
                if (i < aAndroidIconTexts.Length)
                {
                    aPicSize = aAndroidIconTexts[i] + "x" + aAndroidIconTexts[i];
                }
                else
                {
                    aPicSize = SDBaseType.cUIName036;
                }
                if (i < mShowSetInfo.AndroidSet.DefIcons.Length)
                {
                    IconObjectSet(aPicSize, ref mUIUseImages.AndroidIcons[i], ref mShowSetInfo.AndroidSet.DefIcons[i]);
                }
            }
            EditorGUI.indentLevel--;
        }
        // Icon設定中有個Enable Android Banner區域,暫時不做處理
//		mEnableAndroidBanner = EditorGUILayout.ToggleLeft("Enable Android Banner", mEnableAndroidBanner);
//		if(mEnableAndroidBanner) {
//			EditorGUI.indentLevel++;
//			mEAndroidBanner = EditorGUILayout.ObjectField("320x180", mEAndroidBanner, typeof(Texture2D), false) as Texture2D;
//
//			EditorGUILayout.BeginHorizontal();
//			EditorGUILayout.Space();
//			EditorGUILayout.Space();
//			EditorGUILayout.PrefixLabel("Path :");
//			EditorGUILayout.LabelField("Tmp/Path");
//			EditorGUILayout.EndHorizontal();
//			EditorGUI.indentLevel--;
//		}
        EditorGUI.indentLevel--;
    }
        private static void SetPlatformIcons(MultiPlatformItem pPlatformItem)
        {
            var targetGroup = GetBuildTargetGroup(pPlatformItem);

            var pIconsFoldPath = Application.dataPath + "/" + pPlatformItem.iconFolder;

            if (!Directory.Exists(pIconsFoldPath))
            {
                Debug.LogError("Icon folder [ " + pPlatformItem.iconFolder + "] is not exist (图标文件夹不存在)!");
                return;
            }

            var iconFilePaths = Directory.GetFiles(pIconsFoldPath, "*.png", SearchOption.AllDirectories);

            if (iconFilePaths.Length <= 0)
            {
                Debug.LogError("There is no png icon image in (不存在png图标) [" + pPlatformItem.iconFolder + "]");
                return;
            }

            var pIconTextureList = new List <Texture2D> ();

            foreach (var pIconPath in iconFilePaths)
            {
                var assetPath = pIconPath.Substring(Application.dataPath.Length);
                assetPath = "Assets" + assetPath;

                var pIconTex = AssetDatabase.LoadAssetAtPath <Texture2D> (assetPath);
                pIconTextureList.Add(pIconTex);
            }

            var pTextureSizes    = PlayerSettings.GetIconSizesForTargetGroup(targetGroup);
            var pTargetIconArray = new Texture2D[pTextureSizes.Length];

            for (var i = 0; i < pTextureSizes.Length; i++)
            {
                pTargetIconArray [i] = null;

                foreach (var pTex in pIconTextureList)
                {
                    if (pTex.width == pTextureSizes [i])
                    {
                        pTargetIconArray [i] = pTex;
                        break;
                    }
                }
            }

            PlayerSettings.SetIconsForTargetGroup(targetGroup, pTargetIconArray);
        }
예제 #7
0
    static void Build(Texture2D tex, string pre, string gamename)
    {
        PlayerSettings.productName           = gamename;
        PlayerSettings.applicationIdentifier = "com.lebo." + pre;
        BuildTargetGroup tar = BuildTargetGroup.Android;

#if UNITY_ANDROID
        tar = BuildTargetGroup.Android;
#elif UNITY_IOS
        tar = BuildTargetGroup.iOS;
#endif
        int[]       sizelist = PlayerSettings.GetIconSizesForTargetGroup(tar);
        Texture2D[] texs     = new Texture2D[sizelist.Length];
        for (int i = 0; i < sizelist.Length; i++)
        {
            texs[i] = tex;
        }
#if UNITY_ANDROID
        PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.Android, texs);
                #elif UNITY_IOS
        PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.iOS, texs);
#endif
        PlayerSettings.defaultInterfaceOrientation       = UIOrientation.AutoRotation;
        PlayerSettings.allowedAutorotateToLandscapeLeft  = true;
        PlayerSettings.allowedAutorotateToLandscapeRight = true;

        string bagname = "";
        string path    = "";
#if UNITY_ANDROID
        bagname = "lebogaming_android_" + pre + ".apk";
        path    = Application.dataPath.Replace("Assets", "/Publish/");
                #elif UNITY_IOS
        bagname = "lebogaming_ios_" + pre;
        path    = Application.dataPath.Replace("Assets", "Publish/");
#endif

        path += bagname;
        Debug.Log("path = " + path);
        BuildPlayerOptions op = new BuildPlayerOptions();
        op.scenes           = null;
        op.locationPathName = path;
#if UNITY_ANDROID
        op.target = BuildTarget.Android;
                #elif UNITY_IOS
        op.target = BuildTarget.iOS;
#endif
        op.options = BuildOptions.None;

        BuildPipeline.BuildPlayer(op);
    }
예제 #8
0
    /// <summary>
    /// ICON設定
    /// </summary>
    private void UIIOSIcon()
    {
        mShowSetInfo.IOSSet.IconSetStatus = EditorGUILayout.ToggleLeft(SDBaseType.cUIName034, mShowSetInfo.IOSSet.IconSetStatus);
        if (!mShowSetInfo.IOSSet.IconSetStatus)
        {
            return;
        }

        EditorGUILayout.Space();
        EditorGUI.indentLevel++;
        mShowSetInfo.IOSSet.IconOverride = EditorGUILayout.ToggleLeft(SDBaseType.cUIName035, mShowSetInfo.IOSSet.IconOverride);
        if (mShowSetInfo.IOSSet.IconOverride)
        {
            EditorGUI.indentLevel++;

            int[] aIosIconTexts = PlayerSettings.GetIconSizesForTargetGroup(BuildTargetGroup.iOS);
            for (int i = 0; i < mUIUseImages.IosIcons.Length; i++)
            {
                string aPicSize = "";
                if (i < aIosIconTexts.Length)
                {
                    aPicSize = aIosIconTexts[i] + "x" + aIosIconTexts[i];
                }
                else
                {
                    aPicSize = SDBaseType.cUIName036;
                }
                if (i == 9)
                {
                    EditorGUILayout.LabelField(SDBaseType.cUIName070, EditorStyles.boldLabel);
                    EditorGUILayout.Space();
                }
                else if (i == 12)
                {
                    EditorGUILayout.LabelField(SDBaseType.cUIName071, EditorStyles.boldLabel);
                    EditorGUILayout.Space();
                }
                if (i < mShowSetInfo.IOSSet.DefIcons.Length)
                {
                    IconObjectSet(aPicSize, ref mUIUseImages.IosIcons[i], ref mShowSetInfo.IOSSet.DefIcons[i]);
                }
            }
            EditorGUI.indentLevel--;
        }
        mShowSetInfo.IOSSet.PrerenderedIcon = SetToggleHor(SDBaseType.cUIName072, mShowSetInfo.IOSSet.PrerenderedIcon);
        EditorGUI.indentLevel--;
    }
예제 #9
0
    private static void updateAndroidIcons(string _iconPath)
    {
        Texture2D icon = (Texture2D)AssetDatabase.LoadAssetAtPath(_iconPath, typeof(Texture2D));

        if (null == icon)
        {
            return;
        }

        int iconCount = PlayerSettings.GetIconSizesForTargetGroup(BuildTargetGroup.Android).Length;

        Texture2D[] icons = new Texture2D[iconCount];
        for (int i = 0; i < iconCount; i++)
        {
            icons[i] = icon;
        }

        PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.Android, icons);
    }
예제 #10
0
        private static void ConfigureIcons(BuildConfig cfg)
        {
            int[]       sizes = PlayerSettings.GetIconSizesForTargetGroup(cfg.BuildTargetGroup);
            Texture2D[] icons = new Texture2D[sizes.Length];

            Texture2D allIconTemplate = cfg.ICON;

            if (allIconTemplate != null)
            {
                for (int i = 0; i < sizes.Length; i++)
                {
                    icons[i] = allIconTemplate;
                }
            }
            else
            {
                Debug.LogWarning("BuildDriver::ConfigureIcons - ICON not found.");
            }
            PlayerSettings.SetIconsForTargetGroup(cfg.BuildTargetGroup, icons);
        }
예제 #11
0
 public static void SetIconForTargetGroup(BuildTargetGroup platform, Texture2D icon)
 {
     int[]       iconSizes = PlayerSettings.GetIconSizesForTargetGroup(platform);
     Texture2D[] icons     = new Texture2D[iconSizes.Length];
     for (int i = 0; i < icons.Length; i++)
     {
         if (icon.width == iconSizes[i])
         {
             icons[i] = icon;
         }
         else
         {
             Texture2D scaledIcon = new Texture2D(icon.width, icon.height, icon.format, false);
             Graphics.CopyTexture(icon, scaledIcon);
             scaledIcon.Resize(iconSizes[i], iconSizes[i], icon.format, false);
             scaledIcon.Apply();
             icons[i] = scaledIcon;
         }
     }
     PlayerSettings.SetIconsForTargetGroup(platform, icons);
 }
예제 #12
0
        /// <summary>
        /// Attempt to use an <see cref="Texture2D"/> identified by <see cref="string"/> <paramref name="iconGuid"/> to
        /// override the App Icon settings for <see cref="BuildTargetGroup"/> <paramref name="buildTargetGroup"/>.
        /// </summary>
        /// <param name="iconGuid"></param>
        /// <param name="buildTargetGroup"></param>
        private static void TrySetAppIcons(string iconGuid, BuildTargetGroup buildTargetGroup)
        {
            var iconPath = AssetDatabase.GUIDToAssetPath(iconGuid);

            if (string.IsNullOrEmpty(iconPath))
            {
                Debug.LogWarning(CANNOT_FIND_APP_ICON);
            }
            else
            {
                var iconSizes    = PlayerSettings.GetIconSizesForTargetGroup(buildTargetGroup);
                var iconTexture  = AssetDatabase.LoadAssetAtPath <Texture2D>(iconPath);
                var newIconGroup = new Texture2D[iconSizes.Length];
                for (var i = 0; i < newIconGroup.Length; i++)
                {
                    newIconGroup[i] = iconTexture;
                }

                PlayerSettings.SetIconsForTargetGroup(buildTargetGroup, newIconGroup);
            }
        }
예제 #13
0
        private void SetIconSettings(BuildTargetGroup buildTargetGroup)
        {
            if (iconFolder == null)
            {
                return;
            }

            // プラットフォームのアイコンサイズを取得。
            var iconSizes = PlayerSettings.GetIconSizesForTargetGroup(buildTargetGroup);

            var icons = new Texture2D[iconSizes.Length];

            var folderPath   = AssetDatabase.GetAssetPath(iconFolder);
            var iconTextures = UnityEditorUtility.LoadAssetsInFolder <Texture2D>(folderPath);

            for (var i = 0; i < iconSizes.Length; i++)
            {
                var size = iconSizes[i];

                Texture2D texture = null;

                foreach (var iconTexture in iconTextures)
                {
                    var assetPath = AssetDatabase.GetAssetPath(iconTexture);

                    var assetName = Path.GetFileName(assetPath);

                    // icon_72x72.png.
                    if (assetName.Contains(string.Format("{0}x{1}", size, size)))
                    {
                        texture = iconTexture;
                        break;
                    }
                }

                icons[i] = texture;
            }

            PlayerSettings.SetIconsForTargetGroup(buildTargetGroup, icons);
        }
예제 #14
0
    public static void BuildAndroid()
    {
        string qudao    = GetArgValue("qudao").ToLower();
        string bundleId = GetArgValue("bundleId");
        string iconname = GetArgValue("icon");

        Texture2D icon = AssetDatabase.LoadAssetAtPath("Assets/logo/" + iconname + ".png", typeof(Texture2D)) as Texture2D;

        int[]       sizes = PlayerSettings.GetIconSizesForTargetGroup(BuildTargetGroup.Android);
        Texture2D[] icons = new Texture2D[sizes.Length];
        for (int i = 0; i < icons.Length; ++i)
        {
            icons[i] = icon;
        }

        PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.Android, icons);
        PlayerSettings.applicationIdentifier = bundleId;


        StreamReader st      = new StreamReader("Assets/StreamingAssets/res/version.txt");
        string       version = st.ReadLine().Trim();

        PlayerSettings.bundleVersion = version;
        st.Close();
        PlayerSettings.Android.bundleVersionCode = System.Int32.Parse(version.Replace(".", ""));

        string keystoreName = "android";
        string keystorePwd  = "wqgame";
        string keyaliasName = "android.keystore";

        PlayerSettings.productName          = "刀塔3";
        PlayerSettings.Android.keystoreName = "../../../android/keystore/" + keystoreName + ".keystore";
        PlayerSettings.Android.keystorePass = keystorePwd;
        PlayerSettings.Android.keyaliasName = keyaliasName;
        PlayerSettings.Android.keyaliasPass = keystorePwd;

        PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "PLATFORM_ANDROID,PLATFORM_" + qudao.ToUpper());
        BuildPipeline.BuildPlayer(GetLevels(), PackageName + ".apk", BuildTarget.Android, BuildOptions.None);
        PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "");
    }
예제 #15
0
        private void Apply()
        {
            for (int i = 0; i < cdl.clientData.Count; i++)
            {
                if (cdl.clientData[i].platform == nowData.platform)
                {
                    cdl.clientData[i] = nowData;
                    break;
                }
            }
            PlayerSettings.productName           = nowData.gameName;
            PlayerSettings.applicationIdentifier = nowData.gameID;
            PlayerSettings.bundleVersion         = nowData.version;
            BuildTargetGroup group = GetBuildGroupByTarget;

#if UNITY_STANDALONE
            group = GetBuildGroupByTarget;
#elif UNITY_ANDROID
            PlayerSettings.Android.keystorePass     = "******";
            PlayerSettings.Android.keyaliasPass     = "******";
            PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevel23;
            //    group = GetBuildGroupByTarget(BuildTarget.Android);
#elif UNITY_IPHONE
            group = GetBuildGroupByTarget(BuildTarget.iOS);
            PlayerSettings.SetArchitecture(group, 0);
            PlayerSettings.stripEngineCode = false;
            PlayerSettings.SetArchitecture(group, 1);
#endif
            int[]       iconSizes = PlayerSettings.GetIconSizesForTargetGroup(group);
            Texture2D[] texture   = new Texture2D[iconSizes.Length];
            for (int i = 0; i < texture.Length; i++)
            {
                texture[i] = AssetDatabase.LoadAssetAtPath <Texture2D>(nowData.iconPath);
            }
            PlayerSettings.SetIconsForTargetGroup(group, texture);
            AssetDatabase.Refresh();
            Debug.Log("设置成功:" + nowData.gameName + "+" + nowData.gameID + "+" + nowData.version);
        }
        public override BuildState OnUpdate()
        {
            var tex = (Texture2D)AssetDatabase.LoadAssetAtPath(Path, typeof(Texture2D));

            if (tex == null)
            {
                Debug.LogError("Icon Not Found : " + Path);
                return(BuildState.Failure);
            }

            var count = PlayerSettings.GetIconSizesForTargetGroup(this.Group).Length;

            var textures = new List <Texture2D>();

            for (int i = 0; i < count; i++)
            {
                textures.Add(tex);
            }

            PlayerSettings.SetIconsForTargetGroup(this.Group, textures.ToArray());

            return(BuildState.Success);
        }
예제 #17
0
    public static void BuildIOS()
    {
        string qudao       = GetArgValue("qudao");
        string bundleId    = GetArgValue("bundleId");
        string iconname    = GetArgValue("icon");
        string projectPath = GetArgValue("outpath");

        Texture2D icon = AssetDatabase.LoadAssetAtPath("Assets/logo/" + iconname + ".png", typeof(Texture2D)) as Texture2D;

        int[]       sizes = PlayerSettings.GetIconSizesForTargetGroup(BuildTargetGroup.iOS);
        Texture2D[] icons = new Texture2D[sizes.Length];
        for (int i = 0; i < icons.Length; ++i)
        {
            icons[i] = icon;
        }

        PlayerSettings.productName = "刀塔3";
        PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.iOS, icons);
        PlayerSettings.applicationIdentifier = bundleId;
        StreamReader st            = new StreamReader("Assets/StreamingAssets/res/version.txt");
        string       bundleVersion = st.ReadLine().Trim();

        if (qudao == "pp")
        {
            int index = bundleVersion.LastIndexOf('.');
            bundleVersion = bundleVersion.Substring(0, index) + bundleVersion.Substring(index + 1);
            PlayerSettings.bundleVersion = bundleVersion;
        }
        else
        {
            PlayerSettings.bundleVersion = bundleVersion;
        }
        st.Close();
        PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, "PLATFORM_IOS,PLATFORM_" + qudao.ToUpper());
        BuildPipeline.BuildPlayer(GetLevels(), projectPath, BuildTarget.iOS, BuildOptions.AcceptExternalModificationsToPlayer | BuildOptions.SymlinkLibraries);
        PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, "");
    }
예제 #18
0
        /// <summary>
        /// 设置安卓的spalshicon  可通用
        /// </summary>
        private static void SetAndroidSpalshIcon(string platformName, AppGameConfig gameCfg)
        {
            //先清理资源文件
            FileUtils.CleanDirectory(UnityEngine.Application.dataPath + "/PlatformData/");
            AssetDatabase.Refresh();

            #region   unity splash
#if UNITY_5_6_OR_NEWER
            {
                List <PlayerSettings.SplashScreenLogo> logoList = new List <PlayerSettings.SplashScreenLogo>();

                string screenSourcePath = string.Format(Directory.GetParent(UnityEngine.Application.dataPath) + "/PlatformData/{0}/android/splash_screen/", platformName);//源目录文件夹

                string screenTargetPath = string.Format(UnityEngine.Application.dataPath + "/PlatformData/{0}/android/splash_screen/", platformName);

                //存在splash文件时,拷贝到unity
                if (Directory.Exists(screenSourcePath))
                {
                    if (Directory.Exists(screenTargetPath))
                    {
                        AssetBuilderCtrl.CleanDirectory(screenTargetPath);
                    }
                    Directory.CreateDirectory(screenTargetPath);
                    AssetBuilderCtrl.CopyDirectory(screenSourcePath, screenTargetPath);//拷贝文件夹资源
                    AssetDatabase.Refresh();
                    screenTargetPath = string.Format("Assets/PlatformData/{0}/android/splash_screen/", platformName);
                }

                if (Directory.Exists(screenTargetPath))
                {
                    for (int i = 1; i <= 3; i++)
                    {
                        string logoPath = screenTargetPath + i + ".png";

                        if (!File.Exists(logoPath))
                        {
                            logoPath = screenTargetPath + i + ".jpg";
                        }

                        if (File.Exists(logoPath))
                        {
                            Sprite logoSp = (Sprite)AssetDatabase.LoadAssetAtPath(logoPath, typeof(Sprite));

                            if (logoSp == null)
                            {
                                TextureImporter import = AssetImporter.GetAtPath(logoPath) as TextureImporter;
                                import.textureType      = TextureImporterType.Sprite;
                                import.spriteImportMode = SpriteImportMode.Single;
                                import.mipmapEnabled    = false;
                                import.sRGBTexture      = true;
                                import.alphaSource      = TextureImporterAlphaSource.FromInput;
                                import.anisoLevel       = 16;

                                AssetDatabase.ImportAsset(logoPath);

                                logoSp = (Sprite)AssetDatabase.LoadAssetAtPath(logoPath, typeof(Sprite));
                            }

                            if (logoSp != null)
                            {
                                PlayerSettings.SplashScreenLogo logo =
                                    PlayerSettings.SplashScreenLogo.Create(2.5f, logoSp);
                                logoList.Add(logo);
                            }
                        }
                    }

                    PlayerSettings.SplashScreen.logos           = logoList.ToArray();
                    PlayerSettings.SplashScreen.drawMode        = PlayerSettings.SplashScreen.DrawMode.AllSequential;
                    PlayerSettings.SplashScreen.backgroundColor = Color.white;
                    PlayerSettings.SplashScreen.unityLogoStyle  = PlayerSettings.SplashScreen.UnityLogoStyle.DarkOnLight;
                    PlayerSettings.SplashScreen.show            = true;
                    PlayerSettings.SplashScreen.showUnityLogo   = false;
                }
                else
                {
                    PlayerSettings.SplashScreen.show          = false;
                    PlayerSettings.SplashScreen.showUnityLogo = false;
                }
                //  Directory.Delete(screenTargetPath);//设置完后删除?
            }
#endif
            #endregion

            #region    splash
            {
                string screenSourcePath = string.Format(Directory.GetParent(UnityEngine.Application.dataPath) + "/PlatformData/{0}/android/assets/splash/", platformName);//源目录文件夹
                string screenTargetPath = string.Format(UnityEngine.Application.dataPath + "/PlatformData/{0}/android/assets/splash/", platformName);
                //存在splash文件时,拷贝到unity
                if (Directory.Exists(screenSourcePath))
                {
                    if (Directory.Exists(screenTargetPath))
                    {
                        AssetBuilderCtrl.CleanDirectory(screenTargetPath);
                    }
                    Directory.CreateDirectory(screenTargetPath);
                    AssetBuilderCtrl.CopyDirectory(screenSourcePath, screenTargetPath);//拷贝文件夹资源
                    AssetDatabase.Refresh();
                    screenTargetPath = string.Format("Assets/PlatformData/{0}/android/assets/splash/", platformName);
                }

                int splashCount = 0;
                for (int i = 1; i <= 3; i++)
                {
                    string    iconPath = string.Format("{0}{1}.png", screenTargetPath, i);
                    Texture2D tex2d    = AssetDatabase.LoadAssetAtPath <Texture2D>(iconPath);
                    if (tex2d != null)
                    {
                        splashCount++;
                        PlayerSettings.showUnitySplashScreen = false;

#if UNITY_2017_1_OR_NEWER
                        PlayerSettings.virtualRealitySplashScreen = tex2d;
#endif
                    }
                    else
                    {
                        break;
                    }
                }
                AssetDatabase.Refresh();
                gameCfg.Splash = splashCount;
            }
            PlayerSettings.showUnitySplashScreen = false;
            #endregion

            #region Set icon
            {
                string screenSourcePath = string.Format(Directory.GetParent(UnityEngine.Application.dataPath) + "/PlatformData/{0}/android/icon/", platformName);//源目录文件夹
                string screenTargetPath = string.Format(UnityEngine.Application.dataPath + "/PlatformData/{0}/android/icon/", platformName);
                if (Directory.Exists(screenSourcePath))
                {
                    if (Directory.Exists(screenTargetPath))
                    {
                        AssetBuilderCtrl.CleanDirectory(screenTargetPath);
                    }
                    Directory.CreateDirectory(screenTargetPath);
                    AssetBuilderCtrl.CopyDirectory(screenSourcePath, screenTargetPath);//拷贝文件夹资源
                    AssetDatabase.Refresh();
                }
                screenTargetPath = string.Format("Assets/PlatformData/{0}/android/icon/", platformName);
                int[]       sizeList = PlayerSettings.GetIconSizesForTargetGroup(BuildTargetGroup.Android);
                Texture2D[] icons    = new Texture2D[sizeList.Length];
                for (int i = 0; i < sizeList.Length; i++)
                {
                    string    iconPath = string.Format("{0}icon_{1}.png", screenTargetPath, sizeList[i]);
                    Texture2D textIcon = (Texture2D)AssetDatabase.LoadAssetAtPath(iconPath, typeof(Texture2D));
                    icons[i] = textIcon;
                }

                PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.Android, icons);
            }
            #endregion
        }
예제 #19
0
            public static void SetDefaultIcon()
            {
                if (GlobalToolConfigure.Current == null || GlobalToolConfigure.Current.SDK == null)
                {
                    Debug.LogError("GlobalToolConfigure not found, Cannot set default icon");
                    return;
                }
                if (string.IsNullOrEmpty(GlobalToolConfigure.Current.SDK.DefaultIconFilter) || string.IsNullOrEmpty(GlobalToolConfigure.Current.SDK.DefaultIconFilterSearchPath))
                {
                    Debug.LogError("GlobalToolConfigure -> DefaultIconFilter、DefaultIconFilterSearchPath is error, Cannot set default icon");
                    return;
                }

                Debug.Log("Starting set default icon");
                string filter           = GlobalToolConfigure.Current.SDK.DefaultIconFilter;
                string filterSearchPath = BuildPipelineAsset.GetChannelFilterSearchPath(GlobalToolConfigure.Current.SDK.DefaultIconFilterSearchPath);
                var    folders          = new List <string>()
                {
                    filterSearchPath
                };

                string[] searchInFolders = folders.ToArray();
                string[] assets          = AssetDatabase.FindAssets(filter, searchInFolders);

                if (assets == null || assets.Length == 0)
                {
                    Debug.LogError(string.Format("Dir: {0} 下未找到匹配的资源, Icon设置失败", filterSearchPath));
                    return;
                }

                List <Texture2D> mTextures = new List <Texture2D>();

                mTextures.Clear();
                for (int i = 0; assets != null && i < assets.Length; i++)
                {
                    string assetPath = AssetDatabase.GUIDToAssetPath(assets[i]);
                    if (assetPath == null)
                    {
                        continue;
                    }
                    Texture2D asset = AssetDatabase.LoadAssetAtPath <Texture2D>(assetPath);
                    if (asset == null)
                    {
                        continue;
                    }
                    mTextures.Add(asset);
                }

                BuildTarget      buildTarget      = EditorUserBuildSettings.activeBuildTarget;
                BuildTargetGroup buildTargetGroup = BuildPipelineCommonTools.BuildUtils.GetBuildTargetGroup(buildTarget);

                int[]       iconSize     = PlayerSettings.GetIconSizesForTargetGroup(buildTargetGroup);
                Texture2D[] textureArray = new Texture2D[iconSize.Length];
                for (int i = 0; i < textureArray.Length; i++)
                {
                    textureArray[i] = mTextures[0];
                }
                PlayerSettings.SetIconsForTargetGroup(buildTargetGroup, textureArray);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();

                Debug.Log("Set default icon succeeded");
                //MethodInfo getIconFormPlatform = typeof(PlayerSettings).GetMethod("GetIconsForPlatform", BindingFlags.NonPublic | BindingFlags.Static);
                //MethodInfo getIconSizesForPlatform = typeof(PlayerSettings).GetMethod("GetIconSizesForPlatform", BindingFlags.NonPublic | BindingFlags.Static);
                //MethodInfo setIconsForPlatform = typeof(PlayerSettings).GetMethod("SetIconsForPlatform", BindingFlags.NonPublic | BindingFlags.Static);
                //Texture2D[] textureArray = (Texture2D[])getIconFormPlatform.Invoke(null, new object[] { string.Empty });
                //var iconSizesForPlatform = (int[])getIconSizesForPlatform.Invoke(null, new object[] { string.Empty });
                //if (textureArray.Length != iconSizesForPlatform.Length)
                //{
                //    textureArray = new Texture2D[iconSizesForPlatform.Length];
                //    setIconsForPlatform.Invoke(null, new object[] { string.Empty, textureArray });
                //}
                //textureArray[0] = mTextures[0];
                //setIconsForPlatform.Invoke(null, new object[] { string.Empty, textureArray });
                //AssetDatabase.SaveAssets();
            }
예제 #20
0
    public static void ApplyPlayerSettings(ProjectBuildData data)
    {
        Type type = typeof(PlayerSettings);


        var types = typeof(PlayerSettings).GetNestedTypes();

        foreach (var nested in types)
        {
            if (!data.Settings.ContainsKey(nested.Name))
            {
                continue;
            }

            string val    = data.Settings[nested.Name];
            var    reader = new LitJson.JsonReader(val);
            while (reader.Read())
            {
                switch (reader.Token)
                {
                case LitJson.JsonToken.PropertyName:
                {
                    string key = reader.Value.ToString();

                    reader.Read();

                    var info = nested.GetProperty(key);
                    if (info == null || !info.CanWrite)
                    {
                        Debug.LogWarning("ingore property:" + key);
                        continue;
                    }
                    if (info.PropertyType == typeof(string))
                    {
                        info.SetValue(null, reader.Value, null);
                    }
                    else if (info.PropertyType == typeof(bool))
                    {
                        info.SetValue(null, bool.Parse(reader.Value.ToString()), null);
                    }
                    else if (info.PropertyType == typeof(int))
                    {
                        info.SetValue(null, int.Parse(reader.Value.ToString()), null);
                    }
                    else if (info.PropertyType.IsEnum)
                    {
                        info.SetValue(null, Enum.Parse(info.PropertyType, reader.Value.ToString()), null);
                    }
                    else
                    {
                        Debug.LogWarning("unidentifiable property named:" + key + " type:" + info.PropertyType.Name);
                    }

                    break;
                }
                }
            }
        }

        foreach (var col in data.Settings)
        {
            PropertyInfo info = type.GetProperty(col.Key);
            if (info == null || !info.CanWrite)
            {
                Debug.LogWarning("ignore property:" + col.Key);
                continue;
            }

            Debug.LogWarning("set property:" + col.Key);
            if (info.PropertyType == typeof(string))
            {
                info.SetValue(null, col.Value, null);
            }
            else if (info.PropertyType == typeof(bool))
            {
                info.SetValue(null, bool.Parse(col.Value), null);
            }
            else if (info.PropertyType == typeof(int))
            {
                info.SetValue(null, int.Parse(col.Value), null);
            }
            else if (info.PropertyType.IsEnum)
            {
                info.SetValue(null, Enum.Parse(info.PropertyType, col.Value), null);
            }
            else
            {
                Debug.LogWarning("unidentifiable field named:" + col.Key + " type:" + info.PropertyType.Name);
            }
        }

        if (data.Settings.ContainsKey("Icons"))
        {
            string icons            = data.Settings["Icons"];
            var    iconsList        = icons.Split(',');
            var    iconsTextureList = new List <Texture2D>();
            foreach (var str in iconsList)
            {
                var texture = AssetDatabase.LoadAssetAtPath <Texture2D>(str);
                iconsTextureList.Add(texture);
            }

            var group     = GetBuildGroupByTarget(data.Target);
            var iconSizes = PlayerSettings.GetIconSizesForTargetGroup(group);
            if (iconSizes.Length > iconsTextureList.Count)
            {
                int count = iconSizes.Length - iconsTextureList.Count;
                for (int i = 0; i < count; i++)
                {
                    iconsTextureList.Add(null);
                }
            }
            PlayerSettings.SetIconsForTargetGroup(group, iconsTextureList.ToArray());
        }

        ApplySelectedScene(data.Scenes);

        if (data.DebugBuild)
        {
            EditorUserBuildSettings.development     = data.DebugBuild;
            EditorUserBuildSettings.connectProfiler = true;
            EditorUserBuildSettings.allowDebugging  = true;
        }
        else
        {
            EditorUserBuildSettings.development     = false;
            EditorUserBuildSettings.connectProfiler = false;
            EditorUserBuildSettings.allowDebugging  = false;
        }

        PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, data.SymbolDefine);
        PlayerSettings.bundleVersion = data.Version;

        AssetDatabase.Refresh();
    }
예제 #21
0
    //这里封装了一个简单的通用方法。
    public static void BulidTarget(string name, string publicer, string ver, string target, bool isDebug)
    {
        string app_name = name + ver + publicer;

        string           target_dir      = string.Empty;
        string           target_name     = app_name + ".exe";
        BuildTargetGroup targetGroup     = BuildTargetGroup.Standalone;
        BuildTarget      buildTarget     = BuildTarget.StandaloneWindows;
        string           applicationPath = Application.dataPath.Replace("/Assets", "");

        target_dir = applicationPath + "/TargetWin";
        if (target == "Android")
        {
            string x86Dir = Application.dataPath + "/Plugins/x86";
            string x64Dir = Application.dataPath + "/Plugins/x86_64";
            if (Directory.Exists(x86Dir))
            {
                Directory.Delete(x86Dir, true);
            }
            if (Directory.Exists(x64Dir))
            {
                Directory.Delete(x64Dir, true);
            }
            AssetDatabase.Refresh();
            Packager.BuildAndroidResource();
            target_dir  = applicationPath + "/TargetAndroid";
            target_name = app_name + ".apk";
            targetGroup = BuildTargetGroup.Android;
            buildTarget = BuildTarget.Android;
        }
        else if (target == "IOS")
        {
            target_dir  = applicationPath + "/TargetIOS";
            target_name = app_name;
            targetGroup = BuildTargetGroup.iOS;
            buildTarget = BuildTarget.iOS;
        }
        else
        {
            Packager.BuildWindowsResource();
        }
        //每次build删除之前的残留
        if (Directory.Exists(target_dir))
        {
            if (File.Exists(target_name))
            {
                File.Delete(target_name);
            }
        }
        else
        {
            Directory.CreateDirectory(target_dir);
        }
        // Player Setting
        //
        PlayerSettings.companyName = "HF";
        //
        PlayerSettings.productName = name;
        //
        PlayerSettings.GetIconSizesForTargetGroup(targetGroup);

        //
        //
        PlayerSettings.defaultInterfaceOrientation           = UIOrientation.LandscapeLeft;
        PlayerSettings.allowedAutorotateToLandscapeLeft      = true;
        PlayerSettings.allowedAutorotateToLandscapeRight     = true;
        PlayerSettings.allowedAutorotateToPortrait           = false;
        PlayerSettings.allowedAutorotateToPortraitUpsideDown = false;
        //
        PlayerSettings.statusBarHidden = true;

        //
        PlayerSettings.apiCompatibilityLevel = ApiCompatibilityLevel.NET_2_0_Subset;
        //
        PlayerSettings.bundleVersion = ver;
        //
        PlayerSettings.forceSingleInstance = true;
        // bug?
        //PlayerSettings.gpuSkinning = true;
        //
        PlayerSettings.renderingPath = RenderingPath.Forward;
        //
        PlayerSettings.strippingLevel = StrippingLevel.Disabled;
        //
        PlayerSettings.stripUnusedMeshComponents = true;

        string[] SCENES = FindEnabledEditorScenes();


        BuildOptions options = BuildOptions.None;

        if (isDebug)
        {
            EditorUserBuildSettings.development     = true;
            EditorUserBuildSettings.connectProfiler = true;
            options |= BuildOptions.Development;
            options |= BuildOptions.ConnectWithProfiler;
        }
        else
        {
            EditorUserBuildSettings.development     = false;
            EditorUserBuildSettings.connectProfiler = false;
        }
        //开始Build场景,等待吧~
        GenericBuild(SCENES, target_dir + "/" + target_name, buildTarget, options);
        // 反定义宏
        PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, "");
    }