com.typhoon.unitysdk 1.1.17 → 1.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,7 +1,19 @@
1
1
  # 更新日志
2
- ## [1.1.17] - 2025-08-13
2
+ ## [1.1.19] - 2025-09-12
3
3
 
4
4
  ### 新增
5
+ * 适配api
6
+
7
+
8
+ ## [1.1.18] - 2025-08-15
9
+
10
+ ### 新增
11
+ * PublishResult 新增微游生成的项目路径
12
+
13
+
14
+ ## [1.1.17] - 2025-08-13
15
+
16
+ ### 新增
5
17
  * 拆分出AATool
6
18
 
7
19
 
@@ -33,7 +33,8 @@ namespace TyphoonUnitySDK
33
33
  { AppChannel.OppoMini, new ApplyOppoMini() },
34
34
  { AppChannel.KuaiShouWebgl, new ApplyKuaiShouWebgl() },
35
35
  { AppChannel.MiniGame, new ApplyMiniGame() },
36
- { AppChannel.XiZhongYou, new ApplyXiZhongYou() }
36
+ { AppChannel.XiZhongYou, new ApplyXiZhongYou() },
37
+ { AppChannel.HuaweiHarmony, new ApplyHuaweiHarmony() },
37
38
  };
38
39
 
39
40
 
@@ -65,6 +66,7 @@ namespace TyphoonUnitySDK
65
66
  KuaiShouWebglConfig.Default.Save();
66
67
  MiniGameWebglConfig.Default.Save();
67
68
  XiZhongYouConfig.Default.Save();
69
+ HuaweiHarmonyConfig.Default.Save();
68
70
  }
69
71
 
70
72
  /// <summary>
@@ -96,8 +98,27 @@ namespace TyphoonUnitySDK
96
98
  // Debug.Log($"<color=#3ac9f3>//TODO//根据发布模式导入更换资源包</color>");
97
99
  }
98
100
  break;
101
+ #if TUANJIE_1_6_OR_NEWER
102
+ case BuildTarget.OpenHarmony:
103
+ {
104
+ ModifyOpenHarmonySetting(setting);
105
+ }
106
+ break;
107
+ #endif
99
108
  default:
100
- Debug.LogError($"未处理的类型:{EditorUserBuildSettings.activeBuildTarget}");
109
+ Debug.Log((int)setting.BuildTarget);
110
+ switch ((int)setting.BuildTarget)
111
+ {
112
+ case 48:
113
+ {
114
+ UniEditor.ShowMessageBox("该引擎版本不支持 Open Harmony,请选择团结引擎", null);
115
+ }
116
+ break;
117
+ default:
118
+ Debug.LogError($"未处理的类型:{EditorUserBuildSettings.activeBuildTarget}");
119
+ break;
120
+ }
121
+
101
122
  break;
102
123
  }
103
124
 
@@ -211,7 +232,9 @@ namespace TyphoonUnitySDK
211
232
  if (setting.OverrideWebglCompressionFormat)
212
233
  {
213
234
  PlayerSettings.WebGL.compressionFormat = setting.CompressionFormat;
235
+ #if UNITY_2020_1_OR_NEWER
214
236
  PlayerSettings.WebGL.decompressionFallback = setting.DecompressionFallback;
237
+ #endif
215
238
  }
216
239
 
217
240
  if (setting.OverrideWebglTemplate)
@@ -259,6 +282,65 @@ namespace TyphoonUnitySDK
259
282
  Debug.Log("Current WebGL Template: " + PlayerSettings.WebGL.template);
260
283
  }
261
284
 
285
+ /// <summary>
286
+ /// 修改open harmony平台参数
287
+ /// </summary>
288
+ public static void ModifyOpenHarmonySetting(PublishSetting setting)
289
+ {
290
+ #if TUANJIE_1_6_OR_NEWER
291
+ PlayerSettings.SetScriptingBackend(BuildTargetGroup.OpenHarmony, setting.ScriptingImplementation);
292
+ PlayerSettings.stripEngineCode = setting.StripEngineCode;
293
+ PlayerSettings.SetManagedStrippingLevel(BuildTargetGroup.OpenHarmony, setting.StrippingLevel);
294
+ if (!string.IsNullOrWhiteSpace(setting.PackageName))
295
+ {
296
+ PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.OpenHarmony, setting.PackageName);
297
+ }
298
+
299
+ if (string.IsNullOrEmpty(setting.KeystoreName) && setting.EnableSignature)
300
+ {
301
+ if (!File.Exists(setting.KeystoreName))
302
+ {
303
+ throw new Exception($"找不到签名文件:{setting.KeystoreName}");
304
+ }
305
+ }
306
+
307
+ PlayerSettings.OpenHarmony.targetArchitectures = 0;
308
+ if (setting.ArmV7)
309
+ {
310
+ PlayerSettings.OpenHarmony.targetArchitectures |= OpenHarmonyArchitecture.ARMv7;
311
+ }
312
+
313
+ if (SupportArm64(setting) && setting.ArmV64)
314
+ {
315
+ PlayerSettings.OpenHarmony.targetArchitectures |= OpenHarmonyArchitecture.ARM64;
316
+ }
317
+
318
+ if (SupportX86_64(setting) && setting.X86_64)
319
+ {
320
+ PlayerSettings.OpenHarmony.targetArchitectures |= OpenHarmonyArchitecture.X86_64;
321
+ }
322
+
323
+ if (PlayerSettings.OpenHarmony.targetArchitectures == 0)
324
+ {
325
+ PlayerSettings.OpenHarmony.targetArchitectures |= OpenHarmonyArchitecture.ARMv7;
326
+ }
327
+
328
+ PlayerSettings.OpenHarmony.compatibleSdkVersion = setting.HarmonyCompatibleSdkVersion;
329
+ PlayerSettings.applicationIdentifier = setting.PackageName;
330
+ //覆写GraphicsAPI
331
+ if (setting.GraphicsAPIs.Length > 0)
332
+ {
333
+ PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.OpenHarmony, false);
334
+ PlayerSettings.SetGraphicsAPIs(BuildTarget.OpenHarmony, setting.GraphicsAPIs);
335
+ }
336
+
337
+ //覆写AA参数
338
+ AddressableSupport.ModifyAAProfileAndVariables(setting);
339
+ //写入App config
340
+ WriteAppConfig(setting);
341
+ #endif
342
+ }
343
+
262
344
  /// <summary>
263
345
  /// 切换平台
264
346
  /// </summary>
@@ -292,7 +374,21 @@ namespace TyphoonUnitySDK
292
374
  return EditorUserBuildSettings.SwitchActiveBuildTargetAsync(BuildTargetGroup.WebGL,
293
375
  buildTarget);
294
376
  }
377
+ #if TUANJIE_1_6_OR_NEWER
378
+ case BuildTarget.OpenHarmony:
379
+ {
380
+ return EditorUserBuildSettings.SwitchActiveBuildTargetAsync(BuildTargetGroup.OpenHarmony,
381
+ buildTarget);
382
+ }
383
+ #endif
295
384
  default:
385
+ switch ((int)buildTarget)
386
+ {
387
+ case 48:
388
+ UniEditor.ShowMessageBox("该引擎版本不支持 Open Harmony ,请使用团结引擎", null);
389
+ break;
390
+ }
391
+
296
392
  throw new Exception($"未处理的类型:{buildTarget}");
297
393
  }
298
394
  }
@@ -323,8 +419,37 @@ namespace TyphoonUnitySDK
323
419
  /// <summary>
324
420
  /// 是否支持Arm64
325
421
  /// </summary>
326
- public static bool SupportArm64(PublishSetting setting) =>
327
- setting.ScriptingImplementation == ScriptingImplementation.IL2CPP;
422
+ public static bool SupportArm64(PublishSetting setting)
423
+ {
424
+ if (setting.BuildTarget == BuildTarget.Android &&
425
+ setting.ScriptingImplementation == ScriptingImplementation.IL2CPP)
426
+ {
427
+ return true;
428
+ }
429
+
430
+ #if TUANJIE_1_6_OR_NEWER
431
+ if (setting.BuildTarget == BuildTarget.OpenHarmony &&
432
+ setting.ScriptingImplementation == ScriptingImplementation.IL2CPP)
433
+ {
434
+ return true;
435
+ }
436
+ #endif
437
+ return false;
438
+ }
439
+
440
+ /// <summary>
441
+ /// 是否支持x86-64
442
+ /// </summary>
443
+ public static bool SupportX86_64(PublishSetting setting)
444
+ {
445
+ #if TUANJIE_1_6_OR_NEWER
446
+ if (setting.BuildTarget == BuildTarget.OpenHarmony)
447
+ {
448
+ return true;
449
+ }
450
+ #endif
451
+ return false;
452
+ }
328
453
 
329
454
 
330
455
  /// <summary>
@@ -480,6 +605,7 @@ namespace TyphoonUnitySDK
480
605
  public static string[] MaybeFolder = new[]
481
606
  {
482
607
  "Assets/Plugins/Android",
608
+ "Assets/Plugins/OpenHarmony",
483
609
  "Assets/Typhoon_Gen/TyphoonSDK/Runtime",
484
610
  "Assets/WX-WASM-SDK-V2",
485
611
  "Assets/WebGLTemplates",
@@ -745,5 +871,29 @@ namespace TyphoonUnitySDK
745
871
  AssetDatabase.SaveAssets();
746
872
  }
747
873
  }
874
+
875
+ /*华为鸿蒙*/
876
+ public class ApplyHuaweiHarmony : IApply
877
+ {
878
+ public void Apply(PublishSetting setting)
879
+ {
880
+ var pack = UniEditor.PackagePath_HuaweiHarmony;
881
+ Debug.Log($"导入... {pack}");
882
+ ImportUnityPackage(pack);
883
+ var manifest_path = $"{pack}.manifest";
884
+ Debug.Log($"读取资源清单...{manifest_path}");
885
+ var manifest = ReadManifest(manifest_path);
886
+ Debug.Log($"清理多余文件...");
887
+ foreach (var folder in MaybeFolder)
888
+ {
889
+ ClearFilesInDirectory(folder, manifest);
890
+ }
891
+
892
+ ReimportScript(manifest);
893
+ AssetDatabase.Refresh();
894
+ EditorUtility.SetDirty(AppConfigAsset.Instance);
895
+ AssetDatabase.SaveAssets();
896
+ }
897
+ }
748
898
  }
749
899
  }
@@ -65,6 +65,10 @@ namespace TyphoonUnitySDK
65
65
  private static Texture __icon_html5 = null;
66
66
  public static Texture icon_html5 =>
67
67
  __icon_html5 ?? AssetDatabase.LoadAssetAtPath<Texture>($"{FolderPath}/icon_html5.png");
68
+ private static Texture __icon_huawei = null;
69
+ public static Texture icon_huawei =>
70
+ __icon_huawei
71
+ ?? AssetDatabase.LoadAssetAtPath<Texture>($"{FolderPath}/icon_huawei.png");
68
72
  private static Texture __icon_import = null;
69
73
  public static Texture icon_import =>
70
74
  __icon_import
@@ -214,7 +214,28 @@ namespace TyphoonUnitySDK
214
214
  ExportUnityPackage(manifest, UniEditor.PackagePath_XiZhongYou, out var detail);
215
215
  }
216
216
 
217
+ [MenuItem("TyphoonSDK/开发者/导出-华为鸿蒙.unitypackage")]
218
+ public static void ExportHuaweiHarmony()
219
+ {
220
+ var manifest = new List<string>()
221
+ {
222
+ "Assets/Typhoon_Gen/TyphoonSDK/Runtime/HuaweiHarmony",
223
+ "Assets/Plugins/OpenHarmony",
224
+ };
225
+ if (!MakeSureExport(manifest))
226
+ {
227
+ return;
228
+ }
217
229
 
230
+ if (!CheckMissFiles(manifest))
231
+ {
232
+ return;
233
+ }
234
+
235
+ ExportUnityPackage(manifest, UniEditor.PackagePath_HuaweiHarmony, out var detail);
236
+ }
237
+
238
+
218
239
  [MenuItem("TyphoonSDK/开发者/导出-AATool.unitypackage")]
219
240
  public static void ExportAATool()
220
241
  {
@@ -234,6 +255,8 @@ namespace TyphoonUnitySDK
234
255
 
235
256
  ExportUnityPackage(manifest, UniEditor.PackagePath_AATool, out var detail);
236
257
  }
258
+
259
+
237
260
 
238
261
  /// <summary>
239
262
  /// 导出清单文件到模块
@@ -0,0 +1,128 @@
1
+ using System;
2
+ using System.Collections.Generic;
3
+ using System.IO;
4
+ using UnityEditor;
5
+ using UnityEngine;
6
+
7
+ namespace TyphoonUnitySDK
8
+ {
9
+ public static class HuaweiHarmonyConfigGUIDrawer
10
+ {
11
+ public static Dictionary<string, Func<HuaweiHarmonyConfig, bool>> OverrideDrawGUIFunc =
12
+ new Dictionary<string, Func<HuaweiHarmonyConfig, bool>>()
13
+ {
14
+ { "m_Script", DrawProperty_m_Script },
15
+ { $"{nameof(Orientation)}", DrawProperty_Orientation },
16
+ };
17
+
18
+ private static bool DrawProperty_Orientation(HuaweiHarmonyConfig arg)
19
+ {
20
+ return true;
21
+ var txt = arg.Orientation == HuaweiHarmonyConfig.ScreenOrientation.Portrait ? "竖屏" : "横屏";
22
+ GUILayout.Label("横竖屏模式", Styles.BoldLabel);
23
+ if (GUILayout.Button(txt, "PopUp"))
24
+ {
25
+ var menu = new GenericMenu();
26
+ menu.AddItem(new GUIContent("竖屏"), arg.Orientation == HuaweiHarmonyConfig.ScreenOrientation.Portrait,
27
+ () =>
28
+ {
29
+ arg.Orientation = HuaweiHarmonyConfig.ScreenOrientation.Portrait;
30
+ arg.Save();
31
+ });
32
+ menu.AddItem(new GUIContent("横屏"), arg.Orientation == HuaweiHarmonyConfig.ScreenOrientation.Landscape,
33
+ () =>
34
+ {
35
+ arg.Orientation = HuaweiHarmonyConfig.ScreenOrientation.Landscape;
36
+ arg.Save();
37
+ });
38
+ menu.ShowAsContext();
39
+ }
40
+
41
+ return true;
42
+ }
43
+
44
+ private static bool DrawProperty_m_Script(HuaweiHarmonyConfig arg)
45
+ {
46
+ var tmpEnable = GUI.enabled;
47
+ GUI.enabled = true;
48
+ GUILayout.Space(6);
49
+ GUIDrawer.DrawKeynotes("①需要 Tuanjie 1.6.x 或以上");
50
+ GUIDrawer.DrawKeynotes("②剔除第三方SDK,避免与渠道冲突或不兼容");
51
+ GUILayout.Space(6);
52
+ GUI.enabled = tmpEnable;
53
+ return true;
54
+ }
55
+
56
+
57
+ /*绘制GUI*/
58
+ public static void DrawGUI()
59
+ {
60
+ var config = HuaweiHarmonyConfig.Default;
61
+ GUIDrawer.DrawProperty(config, (property) =>
62
+ {
63
+ if (OverrideDrawGUIFunc.TryGetValue(property, out var match))
64
+ {
65
+ return match.Invoke(config);
66
+ }
67
+ return false;
68
+ });
69
+ }
70
+ }
71
+
72
+ public class HuaweiHarmonyConfig : ScriptableObject
73
+ {
74
+ private static string ConfigPath = "Assets/Typhoon_Gen/TyphoonSDK/Editor/HuaweiHarmonyConfig.asset";
75
+
76
+ private static HuaweiHarmonyConfig _instance = null;
77
+
78
+ public static HuaweiHarmonyConfig Default
79
+ {
80
+ get
81
+ {
82
+ if (_instance == null)
83
+ {
84
+ _instance = AssetDatabase.LoadAssetAtPath<HuaweiHarmonyConfig>(ConfigPath);
85
+ }
86
+
87
+ if (_instance == null)
88
+ {
89
+ _instance = CreateInstance<HuaweiHarmonyConfig>();
90
+ var folder = Path.GetDirectoryName(ConfigPath);
91
+ if (!Directory.Exists(folder))
92
+ {
93
+ Directory.CreateDirectory(folder);
94
+ AssetDatabase.Refresh();
95
+ }
96
+
97
+ AssetDatabase.CreateAsset(_instance, ConfigPath);
98
+ }
99
+
100
+ return _instance;
101
+ }
102
+ }
103
+
104
+ /// <summary>
105
+ /// 横竖屏模式
106
+ /// </summary>
107
+ public enum ScreenOrientation
108
+ {
109
+ Portrait,
110
+ Landscape,
111
+ }
112
+
113
+ [Header("横竖屏模式")]
114
+ public ScreenOrientation Orientation = ScreenOrientation.Portrait;
115
+
116
+
117
+ public void Save()
118
+ {
119
+ EditorUtility.SetDirty(this);
120
+ AssetDatabase.SaveAssets();
121
+ }
122
+
123
+ public void SaveConfig()
124
+ {
125
+ Save();
126
+ }
127
+ }
128
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 7d04298db25e6c64686550142e010fb4
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -18,5 +18,6 @@ namespace TyphoonUnitySDK
18
18
  KuaiShouWebgl, //快手WEBGL
19
19
  MiniGame, //微游
20
20
  XiZhongYou, //喜中游
21
+ HuaweiHarmony, //华为鸿蒙
21
22
  }
22
23
  }
@@ -52,5 +52,10 @@ namespace TyphoonUnitySDK
52
52
  /// Oppo生成的rpk路径
53
53
  /// </summary>
54
54
  public string OppoMiniRpkPath;
55
+
56
+ /// <summary>
57
+ /// 微游发布生成的项目路径
58
+ /// </summary>
59
+ public string MiniGameProj { get; set; }
55
60
  }
56
61
  }
@@ -59,6 +59,8 @@ namespace TyphoonUnitySDK
59
59
  public AndroidSdkVersions TargetApiVersion = AndroidSdkVersions.AndroidApiLevelAuto;
60
60
  public bool ArmV7 = true;
61
61
  public bool ArmV64 = true;
62
+ public bool X86_64 = true;
63
+ public int HarmonyCompatibleSdkVersion = 14;
62
64
 
63
65
 
64
66
  [Header("渠道包名信息")]
@@ -131,6 +133,8 @@ namespace TyphoonUnitySDK
131
133
  public bool MiniGameGUIFoldout = true;
132
134
  //xi zhong you
133
135
  public bool XiZhongYouGUIFoldout = true;
136
+ //huawei harmony
137
+ public bool HuaweiHarmonyGUIFoldout = true;
134
138
 
135
139
  //使用配置
136
140
  public virtual void Apply()
@@ -43,8 +43,13 @@ namespace TyphoonUnitySDK
43
43
  { nameof(PublishSetting.ExceptionSupport), DrawProperty_ExceptionSupport },
44
44
  { nameof(PublishSetting.WebglDataCaching), DrawProperty_WebglDataCaching },
45
45
  { nameof(PublishSetting.WebglDebugSymbols), DrawProperty_WebglDebugSymbols },
46
+ { nameof(PublishSetting.DecompressionFallback), DrawProperty_DecompressionFallback },
47
+ { nameof(PublishSetting.OverrideLightEncoding), DrawProperty_OverrideLightEncoding },
48
+ { nameof(PublishSetting.LightmapEncoding), DrawProperty_LightmapEncoding },
46
49
  { nameof(PublishSetting.ArmV7), DrawProperty_ArmV7 },
47
50
  { nameof(PublishSetting.ArmV64), DrawProperty_ArmV64 },
51
+ { nameof(PublishSetting.X86_64), DrawProperty_X86_64 },
52
+ { nameof(PublishSetting.HarmonyCompatibleSdkVersion), DrawProperty_HarmonyCompatibleSdkVersion },
48
53
  { nameof(PublishSetting.MinApiVersion), DrawProperty_MinApiVersion },
49
54
  { nameof(PublishSetting.TargetApiVersion), DrawProperty_TargetApiVersion },
50
55
  { nameof(PublishSetting.GraphicsAPIs), DrawProperty_GraphicsAPIs },
@@ -59,9 +64,41 @@ namespace TyphoonUnitySDK
59
64
  { nameof(PublishSetting.ChinaAndroidGUIFoldout), DrawProperty_ChinaAndroidGUIFoldout },
60
65
  { nameof(PublishSetting.KuaishouWebglGUIFoldout), DrawProperty_KuaiShouWebglGUIFoldout },
61
66
  { nameof(PublishSetting.MiniGameGUIFoldout), DrawProperty_MiniGameGUIFoldout },
62
- { nameof(PublishSetting.XiZhongYouGUIFoldout), DrawProperty_XiZhongYouGUIFoldout }
67
+ { nameof(PublishSetting.XiZhongYouGUIFoldout), DrawProperty_XiZhongYouGUIFoldout },
68
+ { nameof(PublishSetting.HuaweiHarmonyGUIFoldout), DrawProperty_HuaweiHarmonyGUIFoldout }
63
69
  };
64
70
 
71
+ private static bool DrawProperty_LightmapEncoding(PublishSetting setting)
72
+ {
73
+ if (setting.BuildTarget == BuildTarget.WebGL && setting.OverrideLightEncoding)
74
+ {
75
+ return false;
76
+ }
77
+
78
+ return true;
79
+ }
80
+
81
+ private static bool DrawProperty_OverrideLightEncoding(PublishSetting setting)
82
+ {
83
+ if (setting.BuildTarget == BuildTarget.WebGL)
84
+ {
85
+ return false;
86
+ }
87
+
88
+ return true;
89
+ }
90
+
91
+ private static bool DrawProperty_DecompressionFallback(PublishSetting setting)
92
+ {
93
+ if (setting.BuildTarget == BuildTarget.WebGL)
94
+ {
95
+ return false;
96
+ }
97
+
98
+ return true;
99
+ }
100
+
101
+
65
102
  private static bool DrawProperty_ChinaAndroidGUIFoldout(PublishSetting arg)
66
103
  {
67
104
  if (arg.Channel != AppChannel.ChinaAndroid)
@@ -223,7 +260,7 @@ namespace TyphoonUnitySDK
223
260
  }
224
261
 
225
262
 
226
- //绘制 minigame
263
+ //绘制 喜中游
227
264
  private static bool DrawProperty_XiZhongYouGUIFoldout(PublishSetting arg)
228
265
  {
229
266
  if (arg.Channel != AppChannel.XiZhongYou)
@@ -232,9 +269,9 @@ namespace TyphoonUnitySDK
232
269
  }
233
270
 
234
271
  GUILayout.Space(10);
235
- arg.MiniGameGUIFoldout =
236
- GUIDrawer.DrawFoldout("Android-喜中游", arg.MiniGameGUIFoldout, GUILayout.Height(26));
237
- if (arg.MiniGameGUIFoldout)
272
+ arg.XiZhongYouGUIFoldout =
273
+ GUIDrawer.DrawFoldout("Android-喜中游", arg.XiZhongYouGUIFoldout, GUILayout.Height(26));
274
+ if (arg.XiZhongYouGUIFoldout)
238
275
  {
239
276
  XiZhongYouConfigGUIDrawer.DrawGUI();
240
277
  }
@@ -242,6 +279,25 @@ namespace TyphoonUnitySDK
242
279
  return true;
243
280
  }
244
281
 
282
+ //绘制
283
+ private static bool DrawProperty_HuaweiHarmonyGUIFoldout(PublishSetting arg)
284
+ {
285
+ if (arg.Channel != AppChannel.HuaweiHarmony)
286
+ {
287
+ return true;
288
+ }
289
+
290
+ GUILayout.Space(10);
291
+ arg.HuaweiHarmonyGUIFoldout =
292
+ GUIDrawer.DrawFoldout("Harmony-华为鸿蒙", arg.HuaweiHarmonyGUIFoldout, GUILayout.Height(26));
293
+ if (arg.HuaweiHarmonyGUIFoldout)
294
+ {
295
+ HuaweiHarmonyConfigGUIDrawer.DrawGUI();
296
+ }
297
+
298
+ return true;
299
+ }
300
+
245
301
 
246
302
  /// <summary>
247
303
  /// 绘制GUI
@@ -304,20 +360,77 @@ namespace TyphoonUnitySDK
304
360
  /*重绘ArmV64*/
305
361
  private static bool DrawProperty_ArmV64(PublishSetting setting)
306
362
  {
307
- return setting.BuildTarget != BuildTarget.Android;
363
+ if (setting.BuildTarget == BuildTarget.Android)
364
+ {
365
+ return false;
366
+ }
367
+ #if TUANJIE_1_6_OR_NEWER
368
+ if (setting.BuildTarget == BuildTarget.OpenHarmony)
369
+ {
370
+ return false;
371
+ }
372
+ #endif
373
+ return true;
308
374
  }
309
375
 
310
376
  /*重绘ArmV7*/
311
377
  private static bool DrawProperty_ArmV7(PublishSetting setting)
312
378
  {
313
- return setting.BuildTarget != BuildTarget.Android;
379
+ if (setting.BuildTarget == BuildTarget.Android)
380
+ {
381
+ return false;
382
+ }
383
+ #if TUANJIE_1_6_OR_NEWER
384
+ if (setting.BuildTarget == BuildTarget.OpenHarmony)
385
+ {
386
+ return false;
387
+ }
388
+ #endif
389
+ return true;
390
+ }
391
+
392
+ /*重绘X86_64*/
393
+ private static bool DrawProperty_X86_64(PublishSetting setting)
394
+ {
395
+ #if TUANJIE_1_6_OR_NEWER
396
+ if (setting.BuildTarget == BuildTarget.OpenHarmony)
397
+ {
398
+ return false;
399
+ }
400
+ #endif
401
+ return true;
402
+ }
403
+
404
+ /*重绘Harmony CompatibleSdkVersion*/
405
+ private static bool DrawProperty_HarmonyCompatibleSdkVersion(PublishSetting setting)
406
+ {
407
+ #if TUANJIE_1_6_OR_NEWER
408
+ if (setting.BuildTarget == BuildTarget.OpenHarmony)
409
+ {
410
+ GUILayout.BeginHorizontal();
411
+ GUILayout.Label("Compatible Sdk Version", GUILayout.Width(148));
412
+ setting.HarmonyCompatibleSdkVersion = EditorGUILayout.IntField("", setting.HarmonyCompatibleSdkVersion);
413
+ GUILayout.EndHorizontal();
414
+ }
415
+ #endif
416
+ return true;
314
417
  }
315
418
 
316
419
 
317
420
  /*重绘PackageName*/
318
421
  private static bool DrawProperty_PackageName(PublishSetting setting)
319
422
  {
320
- return setting.BuildTarget != BuildTarget.Android;
423
+ if (setting.BuildTarget == BuildTarget.Android)
424
+ {
425
+ return false;
426
+ }
427
+ #if TUANJIE_1_6_OR_NEWER
428
+ if (setting.BuildTarget == BuildTarget.OpenHarmony)
429
+ {
430
+ return false;
431
+ }
432
+ #endif
433
+ return true;
321
434
  }
322
435
 
323
436
  /*绘制版本号*/
@@ -716,7 +829,6 @@ namespace TyphoonUnitySDK
716
829
  return true;
717
830
  }
718
831
 
719
-
720
832
  /*绘制属性*/
721
833
  public static void DrawProperty(Object target, Func<string, bool> ignoreFunc)
722
834
  {
@@ -29,7 +29,8 @@ namespace TyphoonUnitySDK
29
29
  { PublishProcess.VivoMini, "TyphoonUnitySDK.PublishVivoMini" },
30
30
  { PublishProcess.OppoMini, "TyphoonUnitySDK.PublishOppoMini" },
31
31
  { PublishProcess.MiniGame, "TyphoonUnitySDK.PublishMiniGame" },
32
- { PublishProcess.XiZhongYou, "TyphoonUnitySDK.PublishXiZhongYou" }
32
+ { PublishProcess.XiZhongYou, "TyphoonUnitySDK.PublishXiZhongYou" },
33
+ { PublishProcess.HuaweiHarmony, "TyphoonUnitySDK.PublishHuaweiHarmony" }
33
34
  };
34
35
 
35
36
  /// <summary>
@@ -53,6 +53,8 @@ namespace TyphoonUnitySDK
53
53
  return EditorIcons.icon_kuaishou;
54
54
  case AppChannel.MiniGame:
55
55
  return EditorIcons.icon_minigame;
56
+ case AppChannel.HuaweiHarmony:
57
+ return EditorIcons.icon_huawei;
56
58
  }
57
59
 
58
60
  return null;
Binary file
@@ -0,0 +1,147 @@
1
+ fileFormatVersion: 2
2
+ guid: e1b29523e6331d94cbc7f153c01fcf7a
3
+ TextureImporter:
4
+ internalIDToNameTable: []
5
+ externalObjects: {}
6
+ serializedVersion: 12
7
+ mipmaps:
8
+ mipMapMode: 0
9
+ enableMipMap: 1
10
+ sRGBTexture: 1
11
+ linearTexture: 0
12
+ fadeOut: 0
13
+ borderMipMap: 0
14
+ mipMapsPreserveCoverage: 0
15
+ alphaTestReferenceValue: 0.5
16
+ mipMapFadeDistanceStart: 1
17
+ mipMapFadeDistanceEnd: 3
18
+ bumpmap:
19
+ convertToNormalMap: 0
20
+ externalNormalMap: 0
21
+ heightScale: 0.25
22
+ normalMapFilter: 0
23
+ isReadable: 0
24
+ streamingMipmaps: 0
25
+ streamingMipmapsPriority: 0
26
+ vTOnly: 0
27
+ ignoreMasterTextureLimit: 0
28
+ grayScaleToAlpha: 0
29
+ generateCubemap: 6
30
+ cubemapConvolution: 0
31
+ seamlessCubemap: 0
32
+ textureFormat: 1
33
+ maxTextureSize: 2048
34
+ textureSettings:
35
+ serializedVersion: 2
36
+ filterMode: 1
37
+ aniso: 1
38
+ mipBias: 0
39
+ wrapU: 0
40
+ wrapV: 0
41
+ wrapW: 0
42
+ nPOTScale: 1
43
+ lightmap: 0
44
+ compressionQuality: 50
45
+ spriteMode: 0
46
+ spriteExtrude: 1
47
+ spriteMeshType: 1
48
+ alignment: 0
49
+ spritePivot: {x: 0.5, y: 0.5}
50
+ spritePixelsToUnits: 100
51
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52
+ spriteGenerateFallbackPhysicsShape: 1
53
+ alphaUsage: 1
54
+ alphaIsTransparency: 0
55
+ spriteTessellationDetail: -1
56
+ textureType: 0
57
+ textureShape: 1
58
+ singleChannelComponent: 0
59
+ flipbookRows: 1
60
+ flipbookColumns: 1
61
+ maxTextureSizeSet: 0
62
+ compressionQualitySet: 0
63
+ textureFormatSet: 0
64
+ ignorePngGamma: 0
65
+ applyGammaDecoding: 0
66
+ cookieLightType: 0
67
+ platformSettings:
68
+ - serializedVersion: 3
69
+ buildTarget: DefaultTexturePlatform
70
+ maxTextureSize: 2048
71
+ resizeAlgorithm: 0
72
+ textureFormat: -1
73
+ textureCompression: 1
74
+ compressionQuality: 50
75
+ crunchedCompression: 0
76
+ allowsAlphaSplitting: 0
77
+ overridden: 0
78
+ androidETC2FallbackOverride: 0
79
+ forceMaximumCompressionQuality_BC6H_BC7: 0
80
+ - serializedVersion: 3
81
+ buildTarget: Standalone
82
+ maxTextureSize: 2048
83
+ resizeAlgorithm: 0
84
+ textureFormat: -1
85
+ textureCompression: 1
86
+ compressionQuality: 50
87
+ crunchedCompression: 0
88
+ allowsAlphaSplitting: 0
89
+ overridden: 0
90
+ androidETC2FallbackOverride: 0
91
+ forceMaximumCompressionQuality_BC6H_BC7: 0
92
+ - serializedVersion: 3
93
+ buildTarget: iPhone
94
+ maxTextureSize: 2048
95
+ resizeAlgorithm: 0
96
+ textureFormat: -1
97
+ textureCompression: 1
98
+ compressionQuality: 50
99
+ crunchedCompression: 0
100
+ allowsAlphaSplitting: 0
101
+ overridden: 0
102
+ androidETC2FallbackOverride: 0
103
+ forceMaximumCompressionQuality_BC6H_BC7: 0
104
+ - serializedVersion: 3
105
+ buildTarget: WebGL
106
+ maxTextureSize: 2048
107
+ resizeAlgorithm: 0
108
+ textureFormat: -1
109
+ textureCompression: 1
110
+ compressionQuality: 50
111
+ crunchedCompression: 0
112
+ allowsAlphaSplitting: 0
113
+ overridden: 0
114
+ androidETC2FallbackOverride: 0
115
+ forceMaximumCompressionQuality_BC6H_BC7: 0
116
+ - serializedVersion: 3
117
+ buildTarget: Android
118
+ maxTextureSize: 2048
119
+ resizeAlgorithm: 0
120
+ textureFormat: -1
121
+ textureCompression: 1
122
+ compressionQuality: 50
123
+ crunchedCompression: 0
124
+ allowsAlphaSplitting: 0
125
+ overridden: 0
126
+ androidETC2FallbackOverride: 0
127
+ forceMaximumCompressionQuality_BC6H_BC7: 0
128
+ spriteSheet:
129
+ serializedVersion: 2
130
+ sprites: []
131
+ outline: []
132
+ physicsShape: []
133
+ bones: []
134
+ spriteID:
135
+ internalID: 0
136
+ vertices: []
137
+ indices:
138
+ edges: []
139
+ weights: []
140
+ secondaryTextures: []
141
+ nameFileIdTable: {}
142
+ spritePackingTag:
143
+ pSDRemoveMatte: 0
144
+ pSDShowRemoveMatteOption: 0
145
+ userData:
146
+ assetBundleName:
147
+ assetBundleVariant:
@@ -85,6 +85,12 @@ namespace TyphoonUnitySDK
85
85
  /// </summary>
86
86
  public static string PackagePath_XiZhongYou = $"{PathRoot}/Sources~/Package/XiZhongYou.unitypackage";
87
87
 
88
+
89
+ /// <summary>
90
+ /// 华为鸿蒙 资源包
91
+ /// </summary>
92
+ public static string PackagePath_HuaweiHarmony = $"{PathRoot}/Sources~/Package/HuaweiHarmony.unitypackage";
93
+
88
94
 
89
95
  /// <summary>
90
96
  /// Toast模块
@@ -65,5 +65,9 @@ namespace TyphoonUnitySDK
65
65
  /// 喜中游
66
66
  /// </summary>
67
67
  XiZhongYou = 12,
68
+ /// <summary>
69
+ /// 华为鸿蒙
70
+ /// </summary>
71
+ HuaweiHarmony = 13,
68
72
  }
69
73
  }
@@ -58,16 +58,17 @@ namespace TyphoonUnitySDK
58
58
  /*绑定SDK实例*/
59
59
  public static Dictionary<AppChannel, string> SDKBindings = new Dictionary<AppChannel, string>
60
60
  {
61
- { AppChannel.Test, "TyphoonUnitySDK.TestSdk" }, //测试渠道
62
- { AppChannel.ChinaAndroid, "TyphoonUnitySDK.ChinaAndroidSdk" }, //国内安卓
63
- { AppChannel.WxMini, "TyphoonUnitySDK.WxMiniSdk" }, //微信小游戏
64
- { AppChannel.DouyinAndroid, "TyphoonUnitySDK.DouyinSdk" }, //抖音小游戏
65
- { AppChannel.DouyinIOS, "TyphoonUnitySDK.DouyinSdk" }, //抖音小游戏
66
- { AppChannel.GooglePlay, "TyphoonUnitySDK.GooglePlaySdk" }, //GooglePlay
67
- { AppChannel.VivoMini, "TyphoonUnitySDK.VivoMiniSdk" }, //Vivo小游戏
68
- { AppChannel.OppoMini, "TyphoonUnitySDK.OppoMiniSdk" }, //Oppo小游戏
69
- { AppChannel.MiniGame, "TyphoonUnitySDK.MiniGameSdk" }, //微游
70
- { AppChannel.XiZhongYou, "TyphoonUnitySDK.XiZhongYouSdk" }, //喜中游
61
+ { AppChannel.Test, "TyphoonUnitySDK.TestSdk" }, //测试渠道
62
+ { AppChannel.ChinaAndroid, "TyphoonUnitySDK.ChinaAndroidSdk" }, //国内安卓
63
+ { AppChannel.WxMini, "TyphoonUnitySDK.WxMiniSdk" }, //微信小游戏
64
+ { AppChannel.DouyinAndroid, "TyphoonUnitySDK.DouyinSdk" }, //抖音小游戏
65
+ { AppChannel.DouyinIOS, "TyphoonUnitySDK.DouyinSdk" }, //抖音小游戏
66
+ { AppChannel.GooglePlay, "TyphoonUnitySDK.GooglePlaySdk" }, //GooglePlay
67
+ { AppChannel.VivoMini, "TyphoonUnitySDK.VivoMiniSdk" }, //Vivo小游戏
68
+ { AppChannel.OppoMini, "TyphoonUnitySDK.OppoMiniSdk" }, //Oppo小游戏
69
+ { AppChannel.MiniGame, "TyphoonUnitySDK.MiniGameSdk" }, //微游
70
+ { AppChannel.XiZhongYou, "TyphoonUnitySDK.XiZhongYouSdk" }, //喜中游
71
+ { AppChannel.HuaweiHarmony, "TyphoonUnitySDK.HuaweiHarmonySdk" }, //华为鸿蒙
71
72
  };
72
73
 
73
74
  //支付回调类名
@@ -0,0 +1,13 @@
1
+ Assets/Typhoon_Gen/TyphoonSDK/Runtime/HuaweiHarmony
2
+ Assets/Typhoon_Gen/TyphoonSDK/Runtime/HuaweiHarmony/Editor.meta
3
+ Assets/Typhoon_Gen/TyphoonSDK/Runtime/HuaweiHarmony/HuaweiHarmonyCallback.cs
4
+ Assets/Typhoon_Gen/TyphoonSDK/Runtime/HuaweiHarmony/HuaweiHarmonyCallback.cs.meta
5
+ Assets/Typhoon_Gen/TyphoonSDK/Runtime/HuaweiHarmony/HuaweiHarmonySdk.cs
6
+ Assets/Typhoon_Gen/TyphoonSDK/Runtime/HuaweiHarmony/HuaweiHarmonySdk.cs.meta
7
+ Assets/Typhoon_Gen/TyphoonSDK/Runtime/HuaweiHarmony/Editor/PublishHuaweiHarmony.cs
8
+ Assets/Typhoon_Gen/TyphoonSDK/Runtime/HuaweiHarmony/Editor/PublishHuaweiHarmony.cs.meta
9
+ Assets/Plugins/OpenHarmony
10
+ Assets/Plugins/OpenHarmony/HarmonyBridge.etslib
11
+ Assets/Plugins/OpenHarmony/HarmonyBridge.etslib.meta
12
+ Assets/Plugins/OpenHarmony/TuanjiePlayerAbility.ets
13
+ Assets/Plugins/OpenHarmony/TuanjiePlayerAbility.ets.meta
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"com.typhoon.unitysdk","displayName":"typhoon unity sdk","version":"1.1.17","description":"","unity":"2018.1","type":"tool","hideInEditor":false,"author":{"name":"Jan Zhang","email":"","url":""},"changelogUrl":"","documentationUrl":"","keywords":["typhoon"],"license":"","licensesUrl":"","customDependencies":[{"PackageName":"com.unity.nuget.newtonsoft-json","Value":"2.0.0"}],"version_log":"## [1.1.17] - 2025-08-13\r\n\r\n### 新增\n* 拆分出AATool\r\n\r\n","major_flag":false,"write_time_stamp":1755068529000,"others":{"items":[]},"dependencies":{"com.unity.nuget.newtonsoft-json":"2.0.0"}}
1
+ {"name":"com.typhoon.unitysdk","displayName":"typhoon unity sdk","version":"1.1.19","description":"","unity":"2018.1","type":"tool","hideInEditor":false,"author":{"name":"Jan Zhang","email":"","url":""},"changelogUrl":"","documentationUrl":"","keywords":["typhoon"],"license":"","licensesUrl":"","customDependencies":[{"PackageName":"com.unity.nuget.newtonsoft-json","Value":"2.0.0"}],"version_log":"## [1.1.19] - 2025-09-12\r\n\r\n### 新增\n* 适配api\r\n\r\n","major_flag":false,"write_time_stamp":1757663664000,"others":{"items":[]},"dependencies":{"com.unity.nuget.newtonsoft-json":"2.0.0"}}