mirror of
https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git
synced 2025-11-13 03:35:55 +08:00
137 lines
5.0 KiB
C#
137 lines
5.0 KiB
C#
#if TUANJIE_1_4_OR_NEWER
|
||
using System;
|
||
using System.IO;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.Reflection;
|
||
using UnityEditor;
|
||
using UnityEngine;
|
||
using UnityEditor.Build.Profile;
|
||
|
||
namespace WeChatWASM
|
||
{
|
||
public class WeixinMiniGameSettings : MiniGameSettings
|
||
{
|
||
public WXProjectConf ProjectConf;
|
||
public SDKOptions SDKOptions;
|
||
public CompileOptions CompileOptions;
|
||
public CompressTexture CompressTexture;
|
||
public List<string> PlayerPrefsKeys = new List<string>();
|
||
public FontOptions FontOptions;
|
||
|
||
[SerializeField] public bool m_AutomaticFillInstantGame = true;
|
||
|
||
public WeixinMiniGameSettings(MiniGameSettingsEditor editor) : base(editor)
|
||
{
|
||
}
|
||
|
||
public bool PreprocessBuild(BuildProfile buildProfile, BuildOptions options)
|
||
{
|
||
bool result = true;
|
||
if (!string.IsNullOrEmpty(buildProfile.buildPath))
|
||
{
|
||
this.ProjectConf.DST = buildProfile.buildPath;
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError("Build Path is empty!");
|
||
result = false;
|
||
}
|
||
this.CompileOptions.DevelopBuild = buildProfile.platformSettings.development;
|
||
this.CompileOptions.AutoProfile = buildProfile.platformSettings.connectProfiler;
|
||
|
||
this.CompileOptions.CleanBuild = ((int)options & (int)BuildOptions.CleanBuildCache) != 0;
|
||
this.CompileOptions.ScriptOnly = ((int)options & (int)BuildOptions.BuildScriptsOnly) != 0;
|
||
|
||
return result;
|
||
}
|
||
|
||
internal void FillAutoStreamingAutomatically()
|
||
{
|
||
// Instant Game
|
||
if (WXConvertCore.IsInstantGameAutoStreaming())
|
||
{
|
||
if (m_AutomaticFillInstantGame)
|
||
{
|
||
ProjectConf.CDN = WXConvertCore.GetInstantGameAutoStreamingCDN();
|
||
if (!ProjectConf.bundlePathIdentifier.Contains("CUS/CustomAB;"))
|
||
{
|
||
ProjectConf.bundlePathIdentifier = "CUS/CustomAB;" + ProjectConf.bundlePathIdentifier;
|
||
}
|
||
if (!ProjectConf.bundlePathIdentifier.Contains("AS;"))
|
||
{
|
||
ProjectConf.bundlePathIdentifier = "AS;" + ProjectConf.bundlePathIdentifier;
|
||
}
|
||
ProjectConf.dataFileSubPrefix = "CUS";
|
||
}
|
||
}
|
||
}
|
||
|
||
public static void AutoStreamingLoad()
|
||
{
|
||
if (!WXConvertCore.IsInstantGameAutoStreaming())
|
||
{
|
||
return;
|
||
}
|
||
|
||
// Generate
|
||
Type asTextureUIType = Type.GetType("Unity.AutoStreaming.ASTextureUI,Unity.InstantGame.Editor");
|
||
if (asTextureUIType == null)
|
||
{
|
||
Debug.LogError("Type 'Unity.AutoStreaming.ASTextureUI' not found. ");
|
||
return;
|
||
}
|
||
MethodInfo generateTextureAssetBundlesMethod = asTextureUIType.GetMethod("GenerateTextureAssetBundles", BindingFlags.NonPublic | BindingFlags.Static);
|
||
generateTextureAssetBundlesMethod?.Invoke(null, new object[] { false });
|
||
|
||
// reflection to get WXConvertCore.FirstBundlePath
|
||
String FirstBundlePath = "";
|
||
var type = Type.GetType("WeChatWASM.WXConvertCore,WxEditor");
|
||
if (type == null)
|
||
{
|
||
Debug.LogError("Type 'WeChatWASM.WXConvertCore,WxEditor' not found. ");
|
||
return;
|
||
}
|
||
FieldInfo fieldInfo = type.GetField("FirstBundlePath", BindingFlags.Public | BindingFlags.Static);
|
||
if (fieldInfo != null)
|
||
{
|
||
FirstBundlePath = fieldInfo.GetValue(null) as String;
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(FirstBundlePath) && File.Exists(FirstBundlePath))
|
||
{
|
||
Type igBuildPipelineType = Type.GetType("Unity.InstantGame.IGBuildPipeline,Unity.InstantGame.Editor");
|
||
if (igBuildPipelineType == null)
|
||
{
|
||
Debug.LogError("Type 'Unity.InstantGame.IGBuildPipeline' not found. ");
|
||
return;
|
||
}
|
||
MethodInfo uploadMethod = igBuildPipelineType.GetMethod("UploadWeChatDataFile", BindingFlags.Public | BindingFlags.Static);
|
||
|
||
bool returnValue = false;
|
||
if (uploadMethod != null)
|
||
{
|
||
object[] parameters = new object[] { FirstBundlePath };
|
||
object result = uploadMethod.Invoke(null, parameters);
|
||
returnValue = Convert.ToBoolean(result);
|
||
}
|
||
|
||
if (returnValue)
|
||
{
|
||
Debug.Log("转换完成并成功上传首包资源");
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError("首包资源上传失败,请检查网络以及Auto Streaming配置是否正确。");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError("转换失败");
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
#endif
|