コード例 #1
0
        public static TextureCompressionFormat ToTextureCompressionFormat(MobileTextureSubtarget mobileTextureSubtarget)
        {
            switch (mobileTextureSubtarget)
            {
            case MobileTextureSubtarget.Generic:
                return(TextureCompressionFormat.Default);

            case MobileTextureSubtarget.DXT:
                return(TextureCompressionFormat.Dxt1);

            case MobileTextureSubtarget.PVRTC:
                return(TextureCompressionFormat.Pvrtc);

            case MobileTextureSubtarget.ETC:
                return(TextureCompressionFormat.Etc1);

            case MobileTextureSubtarget.ETC2:
                return(TextureCompressionFormat.Etc2);

            case MobileTextureSubtarget.ASTC:
                return(TextureCompressionFormat.Astc);

            default:
                throw new ArgumentOutOfRangeException(nameof(mobileTextureSubtarget), mobileTextureSubtarget, null);
            }
        }
コード例 #2
0
		/*
		 * Constructor
		 */
		public TextureCompressionAndroid(MobileTextureSubtarget subTarget, int versionCodePrefix, bool isActive = false)
		{
			this.subTarget = subTarget;
			this.versionCodePrefix = versionCodePrefix;

			m_textureProperties = new TextureProperties(subTarget.ToString(), isActive);
		}
コード例 #3
0
    static void BuildAssetBundles(string targetDirectory, string directorySuffix,
                                  MobileTextureSubtarget compressionFormat)
    {
        EnsureTargetDirectoryExists(targetDirectory);
        EditorUserBuildSettings.androidBuildSubtarget = compressionFormat;
        if (!EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android,
                                                             BuildTarget.Android))
        {
            Debug.Log("Failed to switch build target");
        }

        // Build the AssetBundles
        string targetPath = Path.Combine(Application.dataPath, targetDirectory);

        BuildPipeline.BuildAssetBundles(targetPath,
                                        BuildAssetBundleOptions.UncompressedAssetBundle,
                                        BuildTarget.Android);

        // We don't want to include a format suffix in the actual asset
        // bundle name, so we build without the suffix and then
        // rename the output directory to have the suffix
        if (!string.IsNullOrEmpty(directorySuffix))
        {
            string renamedBundlesDirectory = targetDirectory + directorySuffix;
            DeleteTargetDirectory(renamedBundlesDirectory);
            string renamedPath = Path.Combine(Application.dataPath, renamedBundlesDirectory);
            Directory.Move(targetPath, renamedPath);
        }
    }
コード例 #4
0
    static void BuildAndroid(bool debug, MobileTextureSubtarget subtarget = MobileTextureSubtarget.ETC)
    {
        BuildTarget buildTarget = BuildTarget.Android;

        // change platform
        if (EditorUserBuildSettings.activeBuildTarget != buildTarget)
        {
            EditorUserBuildSettings.SwitchActiveBuildTarget(buildTarget);
        }

        // options
        BuildOptions options = BuildOptions.SymlinkLibraries;

        if (debug)
        {
            options |= BuildOptions.Development;
        }

        // subtarget
        EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.ETC;

        // version
        PlayerSettings.bundleVersion = ThroneBuild.GAME_VERSION;

        DirectoryInfo di      = new DirectoryInfo(Application.dataPath);
        string        apkPath = Path.Combine(di.Parent.Parent.FullName, "throne_" + (debug ? "debug" : "release") + ".apk");

        BuildPipeline.BuildPlayer(GetLevels(), apkPath, buildTarget, options);
    }
コード例 #5
0
		public static void SaveParameters()
		{
			m_androidBundleVersionCode = PlayerSettings.Android.bundleVersionCode;

			m_androidTextureSubTarget = EditorUserBuildSettings.androidBuildSubtarget;
			m_blackberryTextureSubTarget = EditorUserBuildSettings.blackberryBuildSubtarget;

			m_iPhoneBundleIdentifier = PlayerSettings.iPhoneBundleIdentifier;
			m_iOSApplicationDisplayName = PlayerSettings.iOS.applicationDisplayName;

			m_bundleIdentifier = PlayerSettings.bundleIdentifier;
			m_productName = PlayerSettings.productName;
			m_bundleVersion = PlayerSettings.bundleVersion;

			Array buildTargetGroupArray = Enum.GetValues(typeof(BuildTargetGroup));
            m_customScriptingDefineSymbolArray = new string[buildTargetGroupArray.Length];
			for (int i = 0; i < buildTargetGroupArray.Length; i++)
			{
				m_customScriptingDefineSymbolArray[i] = PlayerSettings.GetScriptingDefineSymbolsForGroup((BuildTargetGroup)buildTargetGroupArray.GetValue(i));
			}

			m_releaseType = AppParameters.Get.releaseType;
			m_platformType = AppParameters.Get.platformType;
			m_distributionPlatform = AppParameters.Get.distributionPlatform;
			m_platformArchitecture = AppParameters.Get.platformArchitecture;
			m_textureCompression = AppParameters.Get.textureCompression;
			m_appParamBundleIdentifier = AppParameters.Get.bundleIdentifier;
			m_appParamProductName = AppParameters.Get.productName;
			m_appParamBundleVersion = AppParameters.Get.bundleVersion;
		}
コード例 #6
0
    private static void Prebuild(MobileTextureSubtarget texture, BuildManifestObject manifest)
    {
        string buildNumber = manifest.GetValue <string>("buildNumber");

        SetBundleVersion(GetBuildPrefix(texture), Int32.Parse(buildNumber));
        SetBuildSubtarget(texture);
    }
コード例 #7
0
    private static int GetBuildPrefix(MobileTextureSubtarget texture)
    {
        switch ((int)texture)
        {
        case 0:     // Generic. Not in use
            return(0);

        case 1:     // DXT
            return(40010);

        case 2:     // PVRTC
            return(50010);

        case 3:     // ATC
            return(30010);

        case 4:     // ETC
            return(10010);

        case 5:     // ETC2
            return(20010);

        default:     // ASTC
            return(60010);
        }
    }
コード例 #8
0
 public void OnPostTextureBake()
 {
     if (AndroidBuildTexCompressionSubtarget != MobileTextureSubtarget.Generic)
     {
         EditorUserBuildSettings.androidBuildSubtarget = AndroidBuildTexCompressionSubtarget;
         AndroidBuildTexCompressionSubtarget           = MobileTextureSubtarget.Generic;
     }
     if (TizenBuildTexCompressionSubtarget != MobileTextureSubtarget.Generic)
     {
         TizenBuildTexCompressionSubtarget = MobileTextureSubtarget.Generic;
     }
 }
コード例 #9
0
        public void OverwriteWithCurrentBuildSettings()
        {
            scenes = EditorBuildSettings.scenes.Select(x => new BuildScene
            {
                scene   = AssetDatabase.LoadAssetAtPath <SceneAsset>(x.path),
                path    = x.path,
                guid    = x.guid.ToString(),
                enabled = x.enabled,
            })
                     .ToArray();

            activeBuildTarget = EditorUserBuildSettings.activeBuildTarget;
            activeScriptCompilationDefines =
                PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup)
                .Split(';').ToList();
            allowDebugging               = EditorUserBuildSettings.allowDebugging;
            androidBuildSubtarget        = EditorUserBuildSettings.androidBuildSubtarget;
            androidEtc2Fallback          = EditorUserBuildSettings.androidETC2Fallback;
            buildAppBundle               = EditorUserBuildSettings.buildAppBundle;
            buildScriptsOnly             = EditorUserBuildSettings.buildScriptsOnly;
            compressFilesInPackage       = EditorUserBuildSettings.compressFilesInPackage;
            compressWithPsArc            = EditorUserBuildSettings.compressWithPsArc;
            connectProfiler              = EditorUserBuildSettings.connectProfiler;
            development                  = EditorUserBuildSettings.development;
            enableHeadlessMode           = EditorUserBuildSettings.enableHeadlessMode;
            explicitArrayBoundsChecks    = EditorUserBuildSettings.explicitArrayBoundsChecks;
            explicitDivideByZeroChecks   = EditorUserBuildSettings.explicitDivideByZeroChecks;
            explicitNullChecks           = EditorUserBuildSettings.explicitNullChecks;
            exportAsGoogleAndroidProject = EditorUserBuildSettings.exportAsGoogleAndroidProject;
            forceInstallation            = EditorUserBuildSettings.forceInstallation;
            installInBuildFolder         = EditorUserBuildSettings.installInBuildFolder;
            iOsBuildConfigType           = EditorUserBuildSettings.iOSBuildConfigType;
            movePackageToDiscOuterEdge   = EditorUserBuildSettings.movePackageToDiscOuterEdge;
            needSubmissionMaterials      = EditorUserBuildSettings.needSubmissionMaterials;
            ps4BuildSubtarget            = EditorUserBuildSettings.ps4BuildSubtarget;
            ps4HardwareTarget            = EditorUserBuildSettings.ps4HardwareTarget;
            selectedBuildTargetGroup     = EditorUserBuildSettings.selectedBuildTargetGroup;
            selectedStandaloneTarget     = EditorUserBuildSettings.selectedStandaloneTarget;
            streamingInstallLaunchRange  = EditorUserBuildSettings.streamingInstallLaunchRange;
            symlinkLibraries             = EditorUserBuildSettings.symlinkLibraries;
            waitForPlayerConnection      = EditorUserBuildSettings.waitForPlayerConnection;
            windowsDevicePortalAddress   = EditorUserBuildSettings.windowsDevicePortalAddress;
            windowsDevicePortalPassword  = EditorUserBuildSettings.windowsDevicePortalPassword;
            windowsDevicePortalUsername  = EditorUserBuildSettings.windowsDevicePortalUsername;
            wsaBuildAndRunDeployTarget   = EditorUserBuildSettings.wsaBuildAndRunDeployTarget;
            wsaSubtarget                 = EditorUserBuildSettings.wsaSubtarget;
            wsaUwpsdk = EditorUserBuildSettings.wsaUWPSDK;
            wsaUwpVisualStudioVersion          = EditorUserBuildSettings.wsaUWPVisualStudioVersion;
            xboxBuildSubtarget                 = EditorUserBuildSettings.xboxBuildSubtarget;
            xboxOneDeployDrive                 = EditorUserBuildSettings.xboxOneDeployDrive;
            xboxOneDeployMethod                = EditorUserBuildSettings.xboxOneDeployMethod;
            xboxOneRebootIfDeployFailsAndRetry = EditorUserBuildSettings.xboxOneRebootIfDeployFailsAndRetry;
        }
コード例 #10
0
ファイル: Builder.cs プロジェクト: Nordeus/UnityBuildPipeline
        /// <summary>
        /// Builds an APK at the specified path with the specified texture compression.
        /// </summary>
        /// <param name="buildPath">Path for the output APK.</param>
        /// <param name="textureCompression">If not null, will override the texture compression subtarget.</param>
        public static void BuildAndroid(string buildPath, MobileTextureSubtarget? textureCompression = null)
        {
            if (textureCompression != null)
            {
                EditorUserBuildSettings.androidBuildSubtarget = textureCompression.Value;
            }

            string buildMessage = BuildPipeline.BuildPlayer(GetEnabledScenePaths().ToArray(), buildPath, BuildTarget.Android, BuildOptions.None);

            if (string.IsNullOrEmpty(buildMessage)) BuildReporter.Current.IndicateSuccessfulBuild();
            else
            {
                BuildReporter.Current.Log(buildMessage, BuildReporter.MessageSeverity.Error);
            }
        }
コード例 #11
0
        public void OnPostTextureBake()
        {
            if (AndroidBuildTexCompressionSubtarget != MobileTextureSubtarget.Generic)
            {
                EditorUserBuildSettings.androidBuildSubtarget = AndroidBuildTexCompressionSubtarget;
                AndroidBuildTexCompressionSubtarget           = MobileTextureSubtarget.Generic;
            }
#if UNITY_TIZEN
            if (TizenBuildTexCompressionSubtarget != MobileTextureSubtarget.Generic)
            {
                EditorUserBuildSettings.tizenBuildSubtarget = TizenBuildTexCompressionSubtarget;
                TizenBuildTexCompressionSubtarget           = MobileTextureSubtarget.Generic;
            }
#endif
        }
コード例 #12
0
 public void OnPreTextureBake()
 {
     AndroidBuildTexCompressionSubtarget = MobileTextureSubtarget.Generic;
     TizenBuildTexCompressionSubtarget   = MobileTextureSubtarget.Generic;
     // the texture override in build settings for some platforms causes poor quality
     if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android &&
         EditorUserBuildSettings.androidBuildSubtarget != MobileTextureSubtarget.Generic)
     {
         AndroidBuildTexCompressionSubtarget           = EditorUserBuildSettings.androidBuildSubtarget; //remember so we can restore later
         EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.Generic;
     }
     if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Tizen)
     {
     }
 }
コード例 #13
0
    static void BuildRTAssets_AssetPacks_Plugin()
    {
        // Save the current setting
        MobileTextureSubtarget originalSetting = EditorUserBuildSettings.androidBuildSubtarget;

        // Clean out any old data
        DeleteTargetDirectory(streamingName);
        DeleteTargetDirectory(assetPacksName);

        // Build the AssetBundles, both in ETC2 and ASTC texture formats
        BuildAssetBundles(assetPacksName, astcSuffix, MobileTextureSubtarget.ASTC);
        BuildAssetBundles(assetPacksName, "", MobileTextureSubtarget.ETC2);
        AssetDatabase.Refresh();

        EditorUserBuildSettings.androidBuildSubtarget = originalSetting;
    }
コード例 #14
0
ファイル: Builder.cs プロジェクト: Nordeus/UnityBuildPipeline
        /// <summary>
        /// Builds the specified build target.
        /// </summary>
        /// <param name="parsedBuildTarget">Build target to build.</param>
        /// <param name="buildPath">Output path for the build.</param>
        /// <param name="parsedTextureSubtarget">Texture compression subtarget for Android.</param>
        public static void Build(BuildTarget parsedBuildTarget, string buildPath, MobileTextureSubtarget? parsedTextureSubtarget = null)
        {
            Directory.CreateDirectory(buildPath);

            switch (parsedBuildTarget)
            {
                case BuildTarget.Android:
                    BuildAndroid(buildPath, parsedTextureSubtarget);
                    break;
                case BuildTarget.iOS:
                    BuildIos(buildPath);
                    break;
                default:
                    throw new ArgumentException(parsedBuildTarget + " is not a supported build target.");
            }
        }
コード例 #15
0
    private static void Build(string textureType, MobileTextureSubtarget texture)
    {
        int    buildNumber   = GetBuildPrefix(texture);
        string prefix        = buildNumber.ToString();
        int    bundleVersion = Int32.Parse(PlayerSettings.bundleVersion);

        PlayerSettings.Android.bundleVersionCode = (buildNumber * 100) + bundleVersion;
        string playerName = "Android_" + textureType + "_" + prefix + "_" + bundleVersion + ".apk";

        BuildPipeline.BuildPlayer(new string[] {
            "Assets/Scenes/Preloader.unity",
            "Assets/Scenes/Main.unity",
        },
                                  "Builds/" + playerName,
                                  BuildTarget.Android,
                                  BuildOptions.Development);
    }
コード例 #16
0
        /// <summary>
        /// Run one or more AssetBundle builds with the specified texture compression formats.
        /// This variant allows for overriding the base format and provides a different return type.
        /// </summary>
        /// <param name="outputPath">The output directory for base AssetBundles. See the other method for notes.</param>
        /// <param name="builds">The main argument to <see cref="BuildPipeline"/>.</param>
        /// <param name="assetBundleOptions">Options to pass to <see cref="BuildPipeline"/>.</param>
        /// <param name="baseTextureFormat">The default format. Note: ETC1 is supported by all devices.</param>
        /// <param name="additionalTextureFormats">Texture formats to generate for in addition to the base.</param>
        /// <param name="allowClearDirectory">Allows this method to clear the contents of the output directory.</param>
        /// <returns>A dictionary from AssetBundle name to TextureCompressionFormat to file outputPath.</returns>
        public static Dictionary <string, Dictionary <TextureCompressionFormat, string> > BuildAssetBundles(
            string outputPath, AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions,
            MobileTextureSubtarget baseTextureFormat, IEnumerable <MobileTextureSubtarget> additionalTextureFormats,
            bool allowClearDirectory)
        {
            if (builds == null || builds.Length == 0)
            {
                throw new ArgumentException("AssetBundleBuild parameter cannot be null or empty");
            }

            foreach (var build in builds)
            {
                if (!AndroidAppBundle.IsValidModuleName(build.assetBundleName))
                {
                    throw new ArgumentException("Invalid AssetBundle name: " + build.assetBundleName);
                }
            }

            if (string.IsNullOrEmpty(outputPath))
            {
                throw new ArgumentNullException("outputPath");
            }

            CheckDirectory(outputPath, allowClearDirectory);

            // Make unique and silently remove the base format, if it was present.
            var textureSubtargets = new HashSet <MobileTextureSubtarget>(
                additionalTextureFormats ?? Enumerable.Empty <MobileTextureSubtarget>());

            textureSubtargets.Remove(baseTextureFormat);

            // Note: GetCompressionFormatSuffix() will throw for unsupported formats.
            var paths = textureSubtargets.Select(format => outputPath + GetCompressionFormatSuffix(format));

            foreach (var path in paths)
            {
                CheckDirectory(path, allowClearDirectory);
            }

            // Throws if the base format is invalid.
            GetCompressionFormat(baseTextureFormat);

            return(BuildAssetBundlesInternal(
                       outputPath, builds, assetBundleOptions, baseTextureFormat, textureSubtargets));
        }
コード例 #17
0
        private void CreateSupportsTextureElem(AndroidManifest manifestXML, MobileTextureSubtarget subTarget)
        {
            if ((PlayerSettings.colorSpace == ColorSpace.Linear) && (subTarget != MobileTextureSubtarget.DXT))
            {
                Debug.LogWarning("Linear rendering works only on new Tegra devices");
            }
            switch (subTarget)
            {
                case MobileTextureSubtarget.Generic:
                case MobileTextureSubtarget.ETC:
                    manifestXML.AddSupportsGLTexture("GL_OES_compressed_ETC1_RGB8_texture");
                    break;

                case MobileTextureSubtarget.DXT:
                    manifestXML.AddSupportsGLTexture("GL_EXT_texture_compression_dxt1");
                    manifestXML.AddSupportsGLTexture("GL_EXT_texture_compression_dxt5");
                    manifestXML.AddSupportsGLTexture("GL_EXT_texture_compression_s3tc");
                    break;

                case MobileTextureSubtarget.PVRTC:
                    manifestXML.AddSupportsGLTexture("GL_IMG_texture_compression_pvrtc");
                    break;

                case MobileTextureSubtarget.ATC:
                    manifestXML.AddSupportsGLTexture("GL_AMD_compressed_ATC_texture");
                    manifestXML.AddSupportsGLTexture("GL_ATI_texture_compression_atitc");
                    break;

                case MobileTextureSubtarget.ETC2:
                    break;

                case MobileTextureSubtarget.ASTC:
                    manifestXML.AddSupportsGLTexture("GL_KHR_texture_compression_astc_ldr");
                    break;

                default:
                    Debug.LogWarning("SubTarget not recognized : " + subTarget);
                    break;
            }
        }
コード例 #18
0
        private void CreateSupportsTextureElem(AndroidManifest manifestXML, MobileTextureSubtarget subTarget)
        {
            if ((PlayerSettings.colorSpace == ColorSpace.Linear) && (subTarget != MobileTextureSubtarget.DXT))
            {
                Debug.LogWarning("Linear rendering works only on new Tegra devices");
            }
            switch (subTarget)
            {
            case MobileTextureSubtarget.Generic:
            case MobileTextureSubtarget.ETC:
                manifestXML.AddSupportsGLTexture("GL_OES_compressed_ETC1_RGB8_texture");
                break;

            case MobileTextureSubtarget.DXT:
                manifestXML.AddSupportsGLTexture("GL_EXT_texture_compression_dxt1");
                manifestXML.AddSupportsGLTexture("GL_EXT_texture_compression_dxt5");
                manifestXML.AddSupportsGLTexture("GL_EXT_texture_compression_s3tc");
                break;

            case MobileTextureSubtarget.PVRTC:
                manifestXML.AddSupportsGLTexture("GL_IMG_texture_compression_pvrtc");
                break;

            case MobileTextureSubtarget.ATC:
                manifestXML.AddSupportsGLTexture("GL_AMD_compressed_ATC_texture");
                manifestXML.AddSupportsGLTexture("GL_ATI_texture_compression_atitc");
                break;

            case MobileTextureSubtarget.ETC2:
                break;

            case MobileTextureSubtarget.ASTC:
                manifestXML.AddSupportsGLTexture("GL_KHR_texture_compression_astc_ldr");
                break;

            default:
                Debug.LogWarning("SubTarget not recognized : " + subTarget);
                break;
            }
        }
コード例 #19
0
        // The internal method assumes all parameter preconditions have already been checked.
        private static Dictionary <string, Dictionary <TextureCompressionFormat, string> > BuildAssetBundlesInternal(
            string outputPath, AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions,
            MobileTextureSubtarget baseTextureFormat, IEnumerable <MobileTextureSubtarget> textureSubtargets)
        {
            // Use a dictionary to capture the generated AssetBundles' file names.
            var nameToTextureFormatToPath = builds.ToDictionary(
                build => build.assetBundleName, _ => new Dictionary <TextureCompressionFormat, string>());

            var originalAndroidBuildSubtarget = EditorUserBuildSettings.androidBuildSubtarget;

            try
            {
                // First build for the additional texture formats.
                foreach (var textureSubtarget in textureSubtargets)
                {
                    // Build AssetBundles in the the base format's directory.
                    EditorUserBuildSettings.androidBuildSubtarget = textureSubtarget;
                    BuildAssetBundles(outputPath, builds, assetBundleOptions);

                    // Then move the files to a new directory with the compression format suffix.
                    var outputPathWithSuffix = outputPath + GetCompressionFormatSuffix(textureSubtarget);
                    Directory.Move(outputPath, outputPathWithSuffix);

                    var textureCompressionFormat = GetCompressionFormat(textureSubtarget);
                    UpdateDictionary(nameToTextureFormatToPath, outputPathWithSuffix, textureCompressionFormat);
                }

                // Then build for the base format.
                EditorUserBuildSettings.androidBuildSubtarget = baseTextureFormat;
                BuildAssetBundles(outputPath, builds, assetBundleOptions);

                UpdateDictionary(nameToTextureFormatToPath, outputPath, TextureCompressionFormat.Default);
                return(nameToTextureFormatToPath);
            }
            finally
            {
                EditorUserBuildSettings.androidBuildSubtarget = originalAndroidBuildSubtarget;
            }
        }
コード例 #20
0
        private static TextureCompressionFormat GetCompressionFormat(MobileTextureSubtarget subtarget)
        {
            switch (subtarget)
            {
            case MobileTextureSubtarget.ASTC:
                return(TextureCompressionFormat.Astc);

            case MobileTextureSubtarget.DXT:
                return(TextureCompressionFormat.Dxt1);

            case MobileTextureSubtarget.ETC:
                return(TextureCompressionFormat.Etc1);

            case MobileTextureSubtarget.ETC2:
                return(TextureCompressionFormat.Etc2);

            case MobileTextureSubtarget.PVRTC:
                return(TextureCompressionFormat.Pvrtc);

            default:
                throw new ArgumentException("Unsupported MobileTextureSubtarget: " + subtarget);
            }
        }
コード例 #21
0
        public static bool BuildBundleWithAssetPacks(BuildPlayerOptions buildPlayerOptions, MobileTextureSubtarget mobileTextureSubtarget, string buildPath)
        {
            TextureCompressionFormat textureCompressionFormat = ToTextureCompressionFormat(mobileTextureSubtarget);

            return(BuildBundleWithAssetPacks(buildPlayerOptions, textureCompressionFormat, buildPath));
        }
コード例 #22
0
    static void BuildRTAssets_AssetPacks_Scripted()
    {
        // Save the current setting
        MobileTextureSubtarget originalSetting = EditorUserBuildSettings.androidBuildSubtarget;

        // Clean out any old data
        DeleteTargetDirectory(streamingName);
        DeleteTargetDirectory(assetPacksName);

        // Build the AssetBundles, both in ETC2 and ASTC texture formats
        BuildAssetBundles(assetPacksName, astcSuffix, MobileTextureSubtarget.ASTC);
        BuildAssetBundles(assetPacksName, "", MobileTextureSubtarget.ETC2);
        AssetDatabase.Refresh();

        // Copy our discrete test image asset into a new directory
        // which will be used for the 'discrete' asset pack source
        string discreteFileName = "Discrete1.jpg";
        string discretePackName = "discretepack";

        string discretePath = Path.Combine(Path.GetTempPath(),
                                           discretePackName);

        Directory.CreateDirectory(discretePath);
        string destPath = Path.Combine(discretePath, discreteFileName);

        if (File.Exists(destPath))
        {
            File.Delete(destPath);
        }

        string sourcePath = Path.Combine(Application.dataPath,
                                         "Images");

        sourcePath = Path.Combine(sourcePath, discreteFileName);
        File.Copy(sourcePath, destPath);
        Debug.Log("Copied discrete file to : " + destPath);

        // Create an AssetPackConfig and start creating asset packs
        AssetPackConfig assetPackConfig = new AssetPackConfig();

        // Create asset packs using AssetBundles
        string assetBundlePath = Path.Combine(Application.dataPath,
                                              assetPacksName);

        // Add the default ETC2 bundles
        assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath,
                                                    "installtime"), AssetPackDeliveryMode.InstallTime);

        assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath,
                                                    "fastfollow"), AssetPackDeliveryMode.FastFollow);

        assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath,
                                                    "ondemand"), AssetPackDeliveryMode.OnDemand);

        // Add the ASTC bundles
        assetBundlePath += astcSuffix;
        assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath,
                                                    "installtime"), AssetPackDeliveryMode.InstallTime);

        assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath,
                                                    "fastfollow"), AssetPackDeliveryMode.FastFollow);

        assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath,
                                                    "ondemand"), AssetPackDeliveryMode.OnDemand);

        // Create an asset pack from our discrete directory
        assetPackConfig.AddAssetsFolder(discretePackName, discretePath,
                                        AssetPackDeliveryMode.OnDemand);

        // Configures the build system to use the newly created
        // assetPackConfig when calling Google > Build and Run or
        // Google > Build Android App Bundle.
        AssetPackConfigSerializer.SaveConfig(assetPackConfig);

        EditorUserBuildSettings.androidBuildSubtarget = originalSetting;
    }
コード例 #23
0
        private static string GetCompressionFormatSuffix(MobileTextureSubtarget subtarget)
        {
            var format = GetCompressionFormat(subtarget);

            return(TextureTargetingTools.GetTargetingSuffix(format));
        }
コード例 #24
0
ファイル: Shared.cs プロジェクト: hanahanaside/JPN
 public static CacheSubtarget? CacheSubtargetForAndroidBuildSubtarget(MobileTextureSubtarget? target)
 {
     switch (target)
     {
         case MobileTextureSubtarget.ATC:
             return CacheSubtarget.Android_ATC;
         case MobileTextureSubtarget.DXT:
             return CacheSubtarget.Android_DXT;
         case MobileTextureSubtarget.Generic:
             return CacheSubtarget.Android_GENERIC;
         case MobileTextureSubtarget.ETC:
             return CacheSubtarget.Android_ETC;
         case MobileTextureSubtarget.ETC2:
             return CacheSubtarget.Android_ETC2;
         case MobileTextureSubtarget.PVRTC:
             return CacheSubtarget.Android_PVRTC;
         case MobileTextureSubtarget.ASTC:
             return CacheSubtarget.Android_ASTC;
         default:
             return null;
     }
 }
コード例 #25
0
 private static void SetBuildSubtarget(MobileTextureSubtarget texture)
 {
     EditorUserBuildSettings.androidBuildSubtarget = texture;
 }
コード例 #26
0
ファイル: Shared.cs プロジェクト: hanahanaside/JPN
 public static CacheSubtarget? CacheSubtargetForBlackBerryBuildSubtarget(MobileTextureSubtarget? target)
 {
     switch (target)
     {
         case MobileTextureSubtarget.Generic:
             return CacheSubtarget.BlackBerry_GENERIC;
         case MobileTextureSubtarget.PVRTC:
             return CacheSubtarget.BlackBerry_PVRTC;
         case MobileTextureSubtarget.ATC:
             return CacheSubtarget.BlackBerry_ATC;
         case MobileTextureSubtarget.ETC:
             return CacheSubtarget.BlackBerry_ETC;
         default:
             return null;
     }
 }
コード例 #27
0
    static void BuildAndroidClient(string defineSymbols = "", E_BuildType buildType = E_BuildType.Universal)
    {
        if (EditorUserBuildSettings.selectedBuildTargetGroup != BuildTargetGroup.Android)
        {
            Debug.LogError("Invalid build target group (" + EditorUserBuildSettings.selectedBuildTargetGroup + ") \n." +
                           "In this moment we are able to build only android clients...");
            return;
        }

        /*if(EditorUserBuildSettings.androidBuildSubtarget != AndroidBuildSubtarget.DXT)
         * {
         *      Debug.LogError("Invalid android sub target (" + EditorUserBuildSettings.androidBuildSubtarget + ") \n."+
         *                                 "In this moment we support only DXT android clients...");
         *      return;
         * }*/

        // .............................................
        // Start to build player...
        string infoPrefix = "==== Client build ";

        Debug.Log(infoPrefix + "started.");


        // .............................................
        // get scenes for dedicated server...
        List <string> listOfScenes = GetScenesForBuild(E_ApplicationType.AndroidClient, buildType);

        if (listOfScenes.Count <= 0)
        {
            Debug.LogWarning(infoPrefix + "List of scenes is empty");
            return;
        }
        Debug.Log(infoPrefix + ", Building Scenes: " + ConvertStringArrayToString(listOfScenes.ToArray()));


        // .............................................
        // prepare output directory...
        MobileTextureSubtarget androidSubTarget = EditorUserBuildSettings.androidBuildSubtarget;
        string subTarget = androidSubTarget.ToString().ToLower();
        string buildName = buildType != E_BuildType.Universal ? ("_" + buildType.ToString()) : string.Empty;

        string outputDirectory = "../_Packages/AndroidPlayer_" + subTarget + buildName + "/";

        System.IO.Directory.CreateDirectory(outputDirectory);

        Debug.Log(infoPrefix + "Output directory: " + outputDirectory);


        // .............................................
        // prepare player name...
        string playerName = outputDirectory + "DeadZone_" + subTarget + buildName + ".apk";

        Debug.Log(infoPrefix + "Player name: " + playerName);


        // .............................................
        // apply settings from
        ApplyAndroidSecretSettings(outputDirectory + "Settings.json");

        // if we are using split apk add loader level
        if (PlayerSettings.Android.useAPKExpansionFiles == true)
        {
            listOfScenes.Insert(0, "MadFinger Assets/Levels/Loader.unity");
        }

        Build(E_ApplicationType.AndroidClient, listOfScenes.ToArray(), playerName, BuildTarget.Android, BuildOptions.None, defineSymbols);

        Debug.Log(infoPrefix + "DONE.");
    }
コード例 #28
0
ファイル: Build.cs プロジェクト: cloudlion/ShaderLab
    static void BuildAndroid(bool release, MobileTextureSubtarget target, int bundleVersion)
    {
        // change platform
        if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android)
        {
            EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android);
        }

        string currentDir = Application.dataPath;
        int    index      = currentDir.LastIndexOf("/");

        currentDir = currentDir.Remove(index);
        index      = currentDir.LastIndexOf("/");
        currentDir = currentDir.Remove(index);
        PlayerSettings.Android.keystoreName = currentDir + "/tools/androidKeystore/linkage.keystore";
        PlayerSettings.Android.keyaliasPass = "******";
        PlayerSettings.Android.keyaliasName = "linkage";
        PlayerSettings.Android.keystorePass = "******";
        //	PlayerSettings.use32BitDisplayBuffer = false;

        EditorUserBuildSettings.androidBuildSubtarget = target;
        string time = System.DateTime.Now.ToString("yyMMddHHmm");
        string name = "aok_" + bundleVersion + "_" + time;

        if (release)
        {
            name += "_rel";
        }
        else
        {
            name += "debug";
        }

        // PlayerSettings.bundleVersion = Environment.GetCommandLineArgs()[Environment.GetCommandLineArgs().Length - 1];
        PlayerSettings.bundleVersion = version;
        // set refresh time
//		Time.maximumDeltaTime = 0.05f;

        if (release)
        {
            PlayerSettings.Android.useAPKExpansionFiles = true;
        }
        else
        {
            PlayerSettings.Android.useAPKExpansionFiles = false;
        }
        if (GameVersion.paymentDebug == 1)
        {
            PlayerSettings.bundleIdentifier = "com.rastargames.goc";
        }
        else
        {
            PlayerSettings.bundleIdentifier = "com.liang.aok";
        }

        currentDir = currentDir + "/" + name + ".apk";

#pragma warning disable 0162
//		if(DoamBuild.VERSION_CODE == 0){
        PlayerSettings.Android.bundleVersionCode = Convert.ToInt32((bundleVersion.ToString() + PlayerSettings.bundleVersion.Replace(".", "")));
//		}else{
//			PlayerSettings.Android.bundleVersionCode = Convert.ToInt32(bundleVersion.ToString()+DoamBuild.VERSION_CODE.ToString());
//		}
#pragma warning restore 0162
        BuildPipeline.BuildPlayer(levels, currentDir, BuildTarget.Android, release ?  BuildOptions.None : BuildOptions.Development);
    }
コード例 #29
0
ファイル: Build.cs プロジェクト: alex-dmtr/Clash-of-Kings
    protected static void RunNoStoreAndroidProdBuild(MobileTextureSubtarget textureCompression)
    {
        EditorUserBuildSettings.androidBuildSubtarget = textureCompression;

        RunBuild(BuildTarget.Android, prodBuildOptions, StoreType.None);
    }
コード例 #30
0
		/*
		 * Constructor
		 */
		public TextureCompressionBlackBerry(MobileTextureSubtarget subTarget, bool isActive = false)
		{
			this.subTarget = subTarget;

			m_textureProperties = new TextureProperties(subTarget.ToString(), isActive);
		}