| | |
| | |
|
| | | public override void LoadConfig(string input)
|
| | | {
|
| | | try {
|
| | | string[] tables = input.Split('\t');
|
| | | #Read#
|
| | | }
|
| | | catch (Exception exception)
|
| | | {
|
| | | Debug.LogError(exception);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | using UnityEngine; |
| | | using UnityEditor; |
| | | using UnityEngine.UI; |
| | | using System.IO; |
| | | using System.Text; |
| | | |
| | | public class PSDTOUGUIProcessor |
| | | { |
| | |
| | | g.raycastTarget = false; |
| | | } |
| | | } |
| | | |
| | | [UnityEditor.MenuItem("GameObject/生成UI脚本", false, 10)] |
| | | public static void GenerateUIScript() |
| | | { |
| | | GameObject go = Selection.activeGameObject; |
| | | if (go == null) |
| | | { |
| | | Debug.LogError("请先选择一个GameObject"); |
| | | return; |
| | | } |
| | | |
| | | string className = go.name; |
| | | string targetFolder = Path.Combine(Application.dataPath, "Scripts/Main/UI"); |
| | | |
| | | // 确保目标文件夹存在 |
| | | if (!Directory.Exists(targetFolder)) |
| | | { |
| | | Directory.CreateDirectory(targetFolder); |
| | | } |
| | | |
| | | string filePath = Path.Combine(targetFolder, className + ".cs"); |
| | | |
| | | // 检查文件是否已存在 |
| | | if (File.Exists(filePath)) |
| | | { |
| | | if (!EditorUtility.DisplayDialog("文件已存在", $"文件 {className}.cs 已存在,是否覆盖?", "覆盖", "取消")) |
| | | { |
| | | return; |
| | | } |
| | | } |
| | | |
| | | // 生成脚本内容 |
| | | StringBuilder sb = new StringBuilder(); |
| | | sb.AppendLine("using UnityEngine;"); |
| | | sb.AppendLine("using System.Collections;"); |
| | | sb.AppendLine("using System.Collections.Generic;"); |
| | | sb.AppendLine("using UnityEngine.UI;"); |
| | | sb.AppendLine("using DG.Tweening;"); |
| | | sb.AppendLine("using Cysharp.Threading.Tasks;"); |
| | | sb.AppendLine(""); |
| | | sb.AppendLine($"public class {className} : UIBase"); |
| | | sb.AppendLine("{"); |
| | | sb.AppendLine(" // 组件引用"); |
| | | sb.AppendLine(""); |
| | | sb.AppendLine(" // 生命周期"); |
| | | sb.AppendLine(" protected override void Awake()"); |
| | | sb.AppendLine(" {"); |
| | | sb.AppendLine(" base.Awake();"); |
| | | sb.AppendLine(" // 初始化组件引用"); |
| | | sb.AppendLine(" }"); |
| | | sb.AppendLine(""); |
| | | sb.AppendLine(" protected override void Start()"); |
| | | sb.AppendLine(" {"); |
| | | sb.AppendLine(" base.Start();"); |
| | | sb.AppendLine(" // 初始化数据"); |
| | | sb.AppendLine(" }"); |
| | | sb.AppendLine(""); |
| | | sb.AppendLine(" // UI事件"); |
| | | sb.AppendLine(" protected override void OnOpen()"); |
| | | sb.AppendLine(" {"); |
| | | sb.AppendLine(" base.OnOpen();"); |
| | | sb.AppendLine(" // 窗口打开时的逻辑"); |
| | | sb.AppendLine(" }"); |
| | | sb.AppendLine(""); |
| | | sb.AppendLine(" protected override void OnClose()"); |
| | | sb.AppendLine(" {"); |
| | | sb.AppendLine(" base.OnClose();"); |
| | | sb.AppendLine(" // 窗口关闭时的逻辑"); |
| | | sb.AppendLine(" }"); |
| | | sb.AppendLine(""); |
| | | sb.AppendLine(" public override void Refresh()"); |
| | | sb.AppendLine(" {"); |
| | | sb.AppendLine(" base.Refresh();"); |
| | | sb.AppendLine(" // 刷新UI显示"); |
| | | sb.AppendLine(" }"); |
| | | sb.AppendLine("}"); |
| | | |
| | | // 写入文件 |
| | | File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8); |
| | | |
| | | Debug.Log($"UI脚本已生成: {filePath}"); |
| | | |
| | | // 刷新资源数据库以显示新文件 |
| | | AssetDatabase.Refresh(); |
| | | |
| | | // 打开生成的脚本 |
| | | UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal(filePath, 1); |
| | | |
| | | } |
| | | } |
| | |
| | | using UnityEngine; |
| | | using System; |
| | | using LaunchCommon; |
| | | using Cysharp.Threading.Tasks; |
| | | |
| | | |
| | | public class DownLoadAndDiscompressTask : Singleton<DownLoadAndDiscompressTask> |
| | | |
| | | { |
| | | public const int BYTE_PER_KILOBYTE = 1024; |
| | | |
| | |
| | | } |
| | | |
| | | StartDownLoad(); |
| | | |
| | | } |
| | | |
| | | public void StartDownLoad() |
| | | { |
| | | step = Step.DownLoad; |
| | | DownloadMgr.Instance.StartCoroutine(Co_StartDownLoad()); |
| | | |
| | | Co_StartDownLoad().Forget(); |
| | | } |
| | | |
| | | IEnumerator Co_StartDownLoad() |
| | | async UniTask Co_StartDownLoad() |
| | | { |
| | | int downLoadTryCount = 0; |
| | | List<bool> checkDownFile = new List<bool>(); |
| | |
| | | |
| | | while (!DownloadMgr.Instance.IsFinished) |
| | | { |
| | | yield return null; |
| | | await UniTask.Yield(); |
| | | } |
| | | |
| | | checkDownFile = new List<bool>(); |
| | |
| | | downLoadTryCount++; |
| | | } |
| | | Debug.LogErrorFormat("资源下载完后有{0}个文件无效({1}),重新开始下载", filledTasks.Count, filledTasks[0].fileName); |
| | | |
| | | } |
| | | tasks = filledTasks; |
| | | if (downLoadTryCount >= 1) |
| | |
| | | { |
| | | Debug.LogError("logic资源下载失败,警告提示,退出协程"); |
| | | LocalResManager.downLoadCount++; |
| | | yield break; |
| | | return; |
| | | } |
| | | |
| | | Debug.Log("资源全部下载完成"); |
| | |
| | | downLoadOkCallBack(); |
| | | downLoadOkCallBack = null; |
| | | } |
| | | |
| | | } |
| | | |
| | | public enum Step |
| | |
| | | DownLoad, |
| | | Completed, |
| | | } |
| | | |
| | | } |
| | |
| | | public static readonly string UI_FONT_SUFFIX = "UI/Font"; |
| | | public static readonly string UI_PREFAB_SUFFIX = "UI/Prefab"; |
| | | |
| | | public static readonly string CONFIG_FODLER = ResourcesOutPath + "Config/Configs/"; |
| | | public static readonly string CONFIG_FODLER = ResourcesOutPath + "Config/"; |
| | | |
| | | public static readonly string AUDIO_SUFFIX = "Audio/"; |
| | | public static readonly string VIDEO_SUFFIX = "Video/"; |
| | |
| | | using System; |
| | | using UnityEngine; |
| | | |
| | | namespace LaunchCommon |
| | | { |
| | | |
| | | public class InitialFunctionConfig |
| | | { |
| | |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | using System.Reflection;
|
| | | using UnityEngine.Networking;
|
| | | using LaunchCommon;
|
| | | using HybridCLR;
|
| | |
|
| | | public class Launch : MonoBehaviour
|
| | | {
|
| | |
| | | {
|
| | | Debug.Log("Launch Start");
|
| | |
|
| | | LaunchLoadingWin.OpenWindow();
|
| | |
|
| | | InitPlugins();
|
| | | InitSetting();
|
| | | SDKInit();
|
| | |
|
| | | // 1. 打开加载界面
|
| | | LaunchLoadingWin.OpenWindow();
|
| | | }
|
| | |
|
| | | private void InitSetting()
|
| | |
| | | LocalResManager.Instance.InitTable(() =>
|
| | | {
|
| | | LocalResManager.Instance.InitDefaultLanguage();
|
| | | LaunchLoadingWin.OpenWindow();
|
| | | // LocalResManager.Instance.OpenWindow("LaunchExWin", m_UICanvas);
|
| | | #if !UNITY_EDITOR
|
| | | LocalResManager.step = LocalResManager.LoadDllStep.RequestVersion;
|
| | |
| | | private void SDKInit()
|
| | | {
|
| | |
|
| | | }
|
| | | |
| | | /// <summary>
|
| | | /// 为aot assembly加载原始metadata, 这个代码放aot或者热更新都行。
|
| | | /// 一旦加载后,如果AOT泛型函数对应native实现不存在,则自动替换为解释模式执行
|
| | | /// </summary>
|
| | | private void LoadMetadataForAOTAssemblies()
|
| | | {
|
| | | /// 注意,补充元数据是给AOT dll补充元数据,而不是给热更新dll补充元数据。
|
| | | /// 热更新dll不缺元数据,不需要补充,如果调用LoadMetadataForAOTAssembly会返回错误
|
| | | /// |
| | | HomologousImageMode mode = HomologousImageMode.SuperSet;
|
| | | foreach (var aotDllName in AOTMetaAssemblyFiles)
|
| | | {
|
| | | if (aotDllName == "Main.dll.bytes")
|
| | | continue;
|
| | | // 加载assembly对应的dll,会自动为它hook。一旦aot泛型函数的native函数不存在,用解释器版本代码
|
| | | LoadImageErrorCode err = RuntimeApi.LoadMetadataForAOTAssembly(ReadBytesFromStreamingAssets(aotDllName), mode);
|
| | | Debug.Log($"LoadMetadataForAOTAssembly:{aotDllName}. mode:{mode} ret:{err}");
|
| | | }
|
| | | }
|
| | |
|
| | | public static byte[] ReadBytesFromStreamingAssets(string dllName)
|
| | | {
|
| | | return s_assetDatas[dllName];
|
| | | }
|
| | |
|
| | | private void StartGame()
|
| | |
| | | {
|
| | | // 特殊处理
|
| | | byte[] assetData;
|
| | | if (asset == "Assembly-CSharp.dll.bytes")
|
| | | if (asset == "Main.dll.bytes")
|
| | | {
|
| | | assetData = new byte[www.downloadHandler.data.Length - 3];
|
| | | Array.Copy(www.downloadHandler.data, 3, assetData, 0, assetData.Length);
|
| | |
| | | private float tipChangeTimer = 0f;
|
| | | private const float TIP_CHANGE_INTERVAL = 3f; // 提示切换间隔时间
|
| | |
|
| | | // 上一次记录的加载步骤
|
| | | private int lastStep = -1;
|
| | | |
| | | // 目标进度值
|
| | | private float targetProgress = 0f;
|
| | | |
| | | // 当前显示的进度值
|
| | | private float currentDisplayProgress = 0f;
|
| | | |
| | | // 进度平滑过渡时间
|
| | | private const float PROGRESS_SMOOTH_TIME = 0.5f;
|
| | | |
| | | private void Awake()
|
| | | {
|
| | | _instance = this;
|
| | | |
| | | Canvas canvas = GetComponent<Canvas>();
|
| | | canvas.sortingOrder = -32768;
|
| | | canvas.overrideSorting = false; // 不覆盖排序
|
| | |
|
| | | // transform.SetAsFirstSibling();
|
| | |
|
| | | // 初始化提示列表
|
| | | InitTipsList();
|
| | |
|
| | | // 初始化进度条
|
| | | SetProgress(0f);
|
| | | }
|
| | | |
| | | private void Update()
|
| | | {
|
| | | // 检查加载步骤是否发生变化
|
| | | CheckLoadingStepChange();
|
| | | |
| | | // 平滑更新进度条显示
|
| | | UpdateProgressDisplay();
|
| | | }
|
| | | |
| | | /// <summary>
|
| | | /// 平滑更新进度条显示
|
| | | /// </summary>
|
| | | private void UpdateProgressDisplay()
|
| | | {
|
| | | // 如果当前显示进度与目标进度不同,平滑过渡
|
| | | if (Mathf.Abs(currentDisplayProgress - targetProgress) > 0.001f)
|
| | | {
|
| | | // 计算平滑过渡的新进度值
|
| | | currentDisplayProgress = Mathf.Lerp(currentDisplayProgress, targetProgress, Time.deltaTime / PROGRESS_SMOOTH_TIME);
|
| | | |
| | | // 更新进度条显示
|
| | | UpdateProgressUI(currentDisplayProgress);
|
| | | }
|
| | | }
|
| | | |
| | | /// <summary>
|
| | | /// 更新进度条UI显示
|
| | | /// </summary>
|
| | | /// <param name="progress">进度值(0-1)</param>
|
| | | private void UpdateProgressUI(float progress)
|
| | | {
|
| | | // 限制进度值范围
|
| | | progress = Mathf.Clamp01(progress);
|
| | | |
| | | // 更新进度条
|
| | | if (progressBar != null)
|
| | | {
|
| | | progressBar.fillAmount = progress;
|
| | | }
|
| | | |
| | | // 更新进度文本
|
| | | if (progressText != null)
|
| | | {
|
| | | progressText.text = $"{(int)(progress * 100)}%";
|
| | | }
|
| | | }
|
| | | |
| | | /// <summary>
|
| | | /// 检查加载步骤变化并更新进度条
|
| | | /// </summary>
|
| | | private void CheckLoadingStepChange()
|
| | | {
|
| | | // 如果LocalResManager不存在,直接返回
|
| | | if (!LocalResManager.IsValid())
|
| | | return;
|
| | | |
| | | // 获取当前加载步骤
|
| | | int currentStep = (int)LocalResManager.step;
|
| | | |
| | | // 如果步骤没有变化且不是下载阶段,直接返回
|
| | | if (currentStep == lastStep && LocalResManager.step != LocalResManager.LoadDllStep.DownLoad)
|
| | | return;
|
| | | |
| | | // 更新上一次记录的步骤
|
| | | lastStep = currentStep;
|
| | | |
| | | // 根据步骤更新进度条
|
| | | UpdateProgressByStep(currentStep);
|
| | | }
|
| | | |
| | | /// <summary>
|
| | | /// 根据加载步骤更新进度条
|
| | | /// </summary>
|
| | | /// <param name="step">当前加载步骤</param>
|
| | | private void UpdateProgressByStep(int step)
|
| | | {
|
| | | // 根据不同步骤设置不同的进度值
|
| | | switch ((LocalResManager.LoadDllStep)step)
|
| | | {
|
| | | case LocalResManager.LoadDllStep.None:
|
| | | targetProgress = 0.0f;
|
| | | break;
|
| | | case LocalResManager.LoadDllStep.Wait:
|
| | | targetProgress = 0.05f;
|
| | | SetCurrentState(FirstPackLang.TextIndex.InitSDK);
|
| | | break;
|
| | | case LocalResManager.LoadDllStep.RequestVersion:
|
| | | targetProgress = 0.1f;
|
| | | SetCurrentState(FirstPackLang.TextIndex.CheckVersion);
|
| | | break;
|
| | | case LocalResManager.LoadDllStep.PrepareDownLoad:
|
| | | targetProgress = 0.2f;
|
| | | SetCurrentState(FirstPackLang.TextIndex.ExtractResources);
|
| | | break;
|
| | | case LocalResManager.LoadDllStep.DownLoad:
|
| | | // 下载阶段占总进度的50%,从20%到70%
|
| | | if (DownLoadAndDiscompressTask.Instance != null)
|
| | | {
|
| | | float downloadProgress = DownLoadAndDiscompressTask.Instance.progress;
|
| | | targetProgress = 0.2f + downloadProgress * 0.5f;
|
| | | }
|
| | | SetCurrentState(FirstPackLang.TextIndex.HotUpdate);
|
| | | break;
|
| | | case LocalResManager.LoadDllStep.ReadBytes:
|
| | | targetProgress = 0.8f;
|
| | | SetCurrentState(FirstPackLang.TextIndex.EnterHotUpdateAssembly);
|
| | | break;
|
| | | case LocalResManager.LoadDllStep.Completed:
|
| | | targetProgress = 1.0f;
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | _instance = null;
|
| | | }
|
| | |
|
| | | |
| | | GameObject.Instantiate(LocalResManager.Instance.LoadBuiltInPrefab("LaunchLoadingWin"));
|
| | | }
|
| | |
|
| | |
| | | /// <param name="progress">进度值(0-1)</param>
|
| | | public void SetProgress(float progress)
|
| | | {
|
| | | // 限制进度值范围
|
| | | progress = Mathf.Clamp01(progress);
|
| | | |
| | | // 更新进度条
|
| | | if (progressBar != null)
|
| | | {
|
| | | progressBar.fillAmount = progress;
|
| | | }
|
| | | |
| | | // 更新进度文本
|
| | | if (progressText != null)
|
| | | {
|
| | | progressText.text = $"{(int)(progress * 100)}%";
|
| | | }
|
| | | // 设置目标进度值
|
| | | targetProgress = Mathf.Clamp01(progress);
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 82528803} |
| | | m_CullTransparentMesh: 1 |
| | | --- !u!1001 &268124820 |
| | | PrefabInstance: |
| | | m_ObjectHideFlags: 0 |
| | | serializedVersion: 2 |
| | | m_Modification: |
| | | serializedVersion: 3 |
| | | m_TransformParent: {fileID: 0} |
| | | m_Modifications: |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_Pivot.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_Pivot.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_AnchorMax.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_AnchorMax.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_AnchorMin.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_AnchorMin.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_SizeDelta.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_SizeDelta.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalPosition.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalPosition.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalPosition.z |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalRotation.w |
| | | value: 1 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalRotation.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalRotation.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalRotation.z |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_AnchoredPosition.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_AnchoredPosition.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalEulerAnglesHint.x |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalEulerAnglesHint.y |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 1798569891721238403, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_LocalEulerAnglesHint.z |
| | | value: 0 |
| | | objectReference: {fileID: 0} |
| | | - target: {fileID: 7323825802519045259, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | propertyPath: m_Name |
| | | value: LaunchLoadingWin |
| | | objectReference: {fileID: 0} |
| | | m_RemovedComponents: [] |
| | | m_RemovedGameObjects: [] |
| | | m_AddedGameObjects: [] |
| | | m_AddedComponents: [] |
| | | m_SourcePrefab: {fileID: 100100000, guid: c594a46018b14f54699ec0c2cc8e60c8, type: 3} |
| | | --- !u!1 &421128700 |
| | | GameObject: |
| | | m_ObjectHideFlags: 0 |
| | |
| | | m_Component: |
| | | - component: {fileID: 519420032} |
| | | - component: {fileID: 519420031} |
| | | - component: {fileID: 519420029} |
| | | - component: {fileID: 519420033} |
| | | m_Layer: 0 |
| | | m_Name: UICamera |
| | |
| | | m_NavMeshLayer: 0 |
| | | m_StaticEditorFlags: 0 |
| | | m_IsActive: 1 |
| | | --- !u!81 &519420029 |
| | | AudioListener: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 519420028} |
| | | m_Enabled: 1 |
| | | --- !u!20 &519420031 |
| | | Camera: |
| | | m_ObjectHideFlags: 0 |
| | |
| | | addedObject: {fileID: 503479953} |
| | | m_AddedComponents: [] |
| | | m_SourcePrefab: {fileID: 100100000, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3} |
| | | --- !u!4 &1580332508 stripped |
| | | Transform: |
| | | --- !u!224 &1580332508 stripped |
| | | RectTransform: |
| | | m_CorrespondingSourceObject: {fileID: 1807634080894636761, guid: 861a0f8791bb1624da118c150ad63b2b, type: 3} |
| | | m_PrefabInstance: {fileID: 1494541948} |
| | | m_PrefabAsset: {fileID: 0} |
| | |
| | | - {fileID: 519420032} |
| | | - {fileID: 421128702} |
| | | - {fileID: 1494541948} |
| | | - {fileID: 268124820} |
New file |
| | |
| | | %YAML 1.1 |
| | | %TAG !u! tag:unity3d.com,2011: |
| | | --- !u!114 &11400000 |
| | | MonoBehaviour: |
| | | m_ObjectHideFlags: 0 |
| | | m_CorrespondingSourceObject: {fileID: 0} |
| | | m_PrefabInstance: {fileID: 0} |
| | | m_PrefabAsset: {fileID: 0} |
| | | m_GameObject: {fileID: 0} |
| | | m_Enabled: 1 |
| | | m_EditorHideFlags: 0 |
| | | m_Script: {fileID: 11500000, guid: e797e662113028e4cb1c302969102134, type: 3} |
| | | m_Name: VersionConfig |
| | | m_EditorClassIdentifier: |
| | | m_AppId: test |
| | | m_SpID: test |
| | | m_VersionAuthority: 0 |
| | | m_Version: 1.000.0 |
| | | m_ClientPackageFlag: 2025 |
| | | m_Branch: 1 |
| | | m_AssetAccess: 3 |
| | | m_PartAssetPackage: 0 |
| | | m_ProductName: testname |
| | | m_BundleIdentifier: com.testapk.game |
| | | m_KeystoreFileName: |
| | | m_KeystorePassword: |
| | | m_KeystoreAlias: |
| | | m_KeystoreAliasPassword: |
| | | m_AppleDeveloperTeamID: |
| | | m_DebugVersion: 1 |
| | | m_IsBanShu: 0 |
| | | m_BuildTime: 2025/05/22--1549 |
| | | m_BuildIndex: 6 |
| | | m_LogoPosition: {x: 0, y: 0} |
| | | m_BanHao: 1 |
| | | m_SdkFileName: |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: d4f0b8e55c9261d4a878f29de216784c |
| | | NativeFormatImporter: |
| | | externalObjects: {} |
| | | mainObjectFileID: 0 |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
| | |
| | | {"m_AppId":"test","m_SpID":"test","m_VersionAuthority":0,"m_Version":"1.105.1","m_ClientPackageFlag":"2021","m_Branch":1,"m_AssetAccess":3,"m_PartAssetPackage":false,"m_ProductName":"Tru Tiên Quyết","m_BundleIdentifier":"com.djmxyn.gp","m_KeystoreFileName":"ald_game","m_KeystorePassword":"aldgame688","m_KeystoreAlias":"ald_alias","m_KeystoreAliasPassword":"aldgame688","m_AppleDeveloperTeamID":"","m_DebugVersion":true,"m_IsBanShu":false,"m_BuildTime":"24/03/14--20:57","m_BuildIndex":6,"m_LogoPosition":{"x":0.0,"y":144.0},"m_BanHao":"1","m_SdkFileName":""} |
| | | {"m_AppId":"test","m_SpID":"test","m_VersionAuthority":0,"m_Version":"1.000.0","m_ClientPackageFlag":"2025","m_Branch":1,"m_AssetAccess":3,"m_PartAssetPackage":false,"m_ProductName":"testname","m_BundleIdentifier":"com.testapk.game","m_KeystoreFileName":"","m_KeystorePassword":"","m_KeystoreAlias":"","m_KeystoreAliasPassword":"","m_AppleDeveloperTeamID":"","m_DebugVersion":true,"m_IsBanShu":false,"m_BuildTime":"2025/05/22--1549","m_BuildIndex":6,"m_LogoPosition":{"x":0.0,"y":0.0},"m_BanHao":"1","m_SdkFileName":""} |