diff --git a/ProjectNLD/Assets/Code/Scripts/FlipbookAnimationStarter.cs b/ProjectNLD/Assets/Code/Scripts/FlipbookAnimationStarter.cs new file mode 100644 index 00000000000..774b9e5260e --- /dev/null +++ b/ProjectNLD/Assets/Code/Scripts/FlipbookAnimationStarter.cs @@ -0,0 +1,127 @@ +using UnityEngine; + +/// +/// Flipbook动画启动器 +/// 用于非循环的Flipbook动画,在对象激活时自动设置_StartTime,使动画从当前时间开始播放 +/// +public class FlipbookAnimationStarter : MonoBehaviour +{ + [Header("设置")] + [Tooltip("是否在OnEnable时自动设置StartTime")] + public bool autoSetOnEnable = true; + + [Tooltip("使用Material实例还是共享Material(建议使用实例)")] + public bool useMaterialInstance = true; + + [Tooltip("是否也处理子对象的Renderer")] + public bool includeChildren = false; + + private static readonly int StartTimePropertyID = Shader.PropertyToID("_StartTime"); + private MaterialPropertyBlock _propertyBlock; + private Renderer[] _renderers; + + private void Awake() + { + // 初始化MaterialPropertyBlock(性能更好的方式) + _propertyBlock = new MaterialPropertyBlock(); + + // 获取所有Renderer + if (includeChildren) + { + _renderers = GetComponentsInChildren(true); + } + else + { + var renderer = GetComponent(); + _renderers = renderer != null ? new[] { renderer } : new Renderer[0]; + } + } + + private void OnEnable() + { + if (autoSetOnEnable) + { + SetStartTime(); + } + } + + /// + /// 手动设置动画开始时间 + /// + public void SetStartTime() + { + SetStartTime(Time.time); + } + + /// + /// 设置指定的开始时间 + /// + public void SetStartTime(float startTime) + { + foreach (var renderer in _renderers) + { + if (renderer == null) continue; + + if (useMaterialInstance) + { + // 方式1: 使用MaterialPropertyBlock(推荐,不会创建材质实例,性能更好) + renderer.GetPropertyBlock(_propertyBlock); + _propertyBlock.SetFloat(StartTimePropertyID, startTime); + renderer.SetPropertyBlock(_propertyBlock); + } + else + { + // 方式2: 使用Material实例(会创建材质副本) + // 注意:renderer.material会自动创建材质实例 + renderer.material.SetFloat(StartTimePropertyID, startTime); + } + } + } + + /// + /// 重置动画到第一帧 + /// + public void ResetAnimation() + { + SetStartTime(0f); + } + + /// + /// 从当前时间重新播放动画 + /// + public void RestartAnimation() + { + SetStartTime(Time.time); + } + +#if UNITY_EDITOR + [ContextMenu("设置StartTime为当前时间")] + private void EditorSetStartTime() + { + if (Application.isPlaying) + { + SetStartTime(); + Debug.Log($"已设置 {gameObject.name} 的StartTime为 {Time.time}"); + } + else + { + Debug.LogWarning("请在运行时执行此操作"); + } + } + + [ContextMenu("重置StartTime为0")] + private void EditorResetStartTime() + { + if (Application.isPlaying) + { + ResetAnimation(); + Debug.Log($"已重置 {gameObject.name} 的StartTime为0"); + } + else + { + Debug.LogWarning("请在运行时执行此操作"); + } + } +#endif +} + diff --git a/ProjectNLD/Assets/Code/Scripts/FlipbookAnimationStarter.cs.meta b/ProjectNLD/Assets/Code/Scripts/FlipbookAnimationStarter.cs.meta new file mode 100644 index 00000000000..cf7d82e57a1 --- /dev/null +++ b/ProjectNLD/Assets/Code/Scripts/FlipbookAnimationStarter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d9aca55876490b6449de8f38a029b7b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/AndroidManifest.xml b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/AndroidManifest.xml new file mode 100644 index 00000000000..b0861159862 --- /dev/null +++ b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/AndroidManifest.xml.meta b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/AndroidManifest.xml.meta new file mode 100644 index 00000000000..e85884bc4c7 --- /dev/null +++ b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/AndroidManifest.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e67627dae8fb6664abc0325a1e989564 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/DevNLD-release.aar b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/DevNLD-release.aar new file mode 100644 index 00000000000..32ba390204e Binary files /dev/null and b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/DevNLD-release.aar differ diff --git a/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/DevNLD-release.aar.meta b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/DevNLD-release.aar.meta new file mode 100644 index 00000000000..2d186dfb60e --- /dev/null +++ b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/DevNLD-release.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 42887166198c26f4a88574c85ebbf377 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/alipaysdk-android-15.8.17.aar b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/alipaysdk-android-15.8.17.aar new file mode 100644 index 00000000000..a34f8139b13 Binary files /dev/null and b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/alipaysdk-android-15.8.17.aar differ diff --git a/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/alipaysdk-android-15.8.17.aar.meta b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/alipaysdk-android-15.8.17.aar.meta new file mode 100644 index 00000000000..40fa5211bac --- /dev/null +++ b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AliPay/alipaysdk-android-15.8.17.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 99faef125be8c3446a158d4b75c6428a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tool/Channels/VinnyTest/Assets/Plugins/Android/AndroidManifest.xml b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AndroidManifest.xml new file mode 100644 index 00000000000..c071f63d888 --- /dev/null +++ b/Tool/Channels/VinnyTest/Assets/Plugins/Android/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tool/Channels/VinnyTest/ChannelSetting.yaml b/Tool/Channels/VinnyTest/ChannelSetting.yaml new file mode 100644 index 00000000000..228c6433d6b --- /dev/null +++ b/Tool/Channels/VinnyTest/ChannelSetting.yaml @@ -0,0 +1,49 @@ +# 宏定义列表,供脚本添加到 PlayerSettings 的宏定义中 +Define_list: + - BI_PHXH # BI + - LOGIN_PHONE # 手机登录 + +# 应用包名 +PackageName: "com.phxh.nlddev" + +# 是否海外渠道 +IsOversea: false + +# 多语言配置 +Language: "Lan_CN" + +# 当前版本号 +Version: "0.8.0" + +# BuildCode +BuildCode: 4 + +# 构建资源远程上传路径 +OssRemoteUploadPath: "oss://nld-dev-k8f3h2qr9plmn3b3/client_res/Build" +AssetsEndPoint: "oss-cn-chengdu.aliyuncs.com" + +# 阿里云 OSS 配置 +ConfigAccessKeyId: "LTAI5tPLKwa1cSD1woBLvNBq" +ConfigAccessKeySecret: "aPvNg3waBzXas8nnn2lo46o1TEQY8X" +ConfigBucketName: "nld-dev-k8f3h2qr9plmn3b3" +ConfigURL: "http://k8f3h2qr9plmn3b3.kedrgame.com" + +# http请求配置 +AppAccessKey: "0SoE48O9sayjkG8J" +AppKey: "uUi_UI1oMKWo0VOSN1zme17Z70-FlAv3Lcx2mNhoYe4=" + +# 崩溃监控配置(仅 Android) +CrashSight_Android: + id: "669a94ce69" # 崩溃上报的 App ID + key: "d9412717-2416-4270-b8bc-f7a0805f988f" # 崩溃上报的 Key + +# TalkingData初始化 +TalkingData: + appid: "2D0025FE20F34810BADABEFC00D32D22" # 测试包的App ID + channel: "VinnyTest" # 上报渠道 + +Packages: + - CrashSight@latest + - TalkingData@0.0.1 + - WXPay@1.0.0 + - AliPay@0.0.1 \ No newline at end of file