lcy
7 小时以前 f3c3e3c6e12d832093a20ad9f01f459573400305
262 幻境阁系统-个人信息界面
6个文件已修改
23个文件已添加
772 ■■■■■ 已修改文件
Main/Config/ConfigManager.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/RandomNameConfig.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/RandomNameConfig.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/RandomNameConfig.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/RandomNameConfig.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA123_tagUpdatePlayerNameCount.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA123_tagUpdatePlayerNameCount.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA921_tagSCRenameResult.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA921_tagSCRenameResult.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA123_tagUpdatePlayerNameCount.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA123_tagUpdatePlayerNameCount.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA9_Function/HA921_tagSCRenameResult.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA9_Function/HA921_tagSCRenameResult.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Main.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/MainWin.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/AvatarCell.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/ExchangeCodeWin.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/ExchangeCodeWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/PlayerProfileWin.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/PlayerProfileWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/RenameManager.cs 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/RenameManager.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/RenameWin.cs 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/RenameWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/SystemSetWin.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PlayerProfile/SystemSetWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/SystemSetting/SystemSetting.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/ConfigManager.cs
@@ -69,6 +69,7 @@
            typeof(PlayerAttrConfig),
            typeof(PlayerFaceConfig),
            typeof(PriorBundleConfig),
            typeof(RandomNameConfig),
            typeof(SignInConfig),
            typeof(StoreConfig),
            typeof(SuccessConfig),
@@ -291,6 +292,8 @@
        ClearConfigDictionary<PlayerFaceConfig>();
        // 清空 PriorBundleConfig 字典
        ClearConfigDictionary<PriorBundleConfig>();
        // 清空 RandomNameConfig 字典
        ClearConfigDictionary<RandomNameConfig>();
        // 清空 SignInConfig 字典
        ClearConfigDictionary<SignInConfig>();
        // 清空 StoreConfig 字典
Main/Config/Configs/RandomNameConfig.cs
New file
@@ -0,0 +1,47 @@
//--------------------------------------------------------
//    [Author]:           YYL
//    [  Date ]:           2025年11月11日
//--------------------------------------------------------
using System.Collections.Generic;
using System;
using UnityEngine;
using LitJson;
public partial class RandomNameConfig : ConfigBase<int, RandomNameConfig>
{
    static RandomNameConfig()
    {
        // 访问过静态构造函数
        visit = true;
    }
    public int ID;
    public string Job;
    public string RandomName1;
    public string RandomName2;
    public override int LoadKey(string _key)
    {
        int key = GetKey(_key);
        return key;
    }
    public override void LoadConfig(string input)
    {
        try {
        string[] tables = input.Split('\t');
        int.TryParse(tables[0],out ID);
            Job = tables[1];
            RandomName1 = tables[2];
            RandomName2 = tables[3];
        }
        catch (Exception exception)
        {
            Debug.LogError(exception);
        }
    }
}
Main/Config/Configs/RandomNameConfig.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: be5973bc28eb7ad47bf0054cb653c1da
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Config/PartialConfigs/RandomNameConfig.cs
New file
@@ -0,0 +1,46 @@
using System.Collections.Generic;
public partial class RandomNameConfig : ConfigBase<int, RandomNameConfig>
{
    // <职业,随机姓>
    static Dictionary<int, List<string>> randomName1Dict = new Dictionary<int, List<string>>();
    // <职业,随机名>
    static Dictionary<int, List<string>> randomName2Dict = new Dictionary<int, List<string>>();
    protected override void OnConfigParseCompleted()
    {
        int[] arr = ConfigParse.GetMultipleStr<int>(Job);
        if (arr.IsNullOrEmpty())
            return;
        foreach (var item in arr)
        {
            if (!randomName1Dict.ContainsKey(item))
            {
                randomName1Dict[item] = new List<string>();
            }
            if (!randomName1Dict[item].Contains(RandomName1))
            {
                randomName1Dict[item].Add(RandomName1);
            }
            if (!randomName2Dict.ContainsKey(item))
            {
                randomName2Dict[item] = new List<string>();
            }
            if (!randomName2Dict[item].Contains(RandomName2))
            {
                randomName2Dict[item].Add(RandomName2);
            }
        }
    }
    public static bool TryGetRandomName1ByJob(int job, out List<string> list)
    {
        list = null;
        return !randomName1Dict.IsNullOrEmpty() && randomName1Dict.TryGetValue(job, out list);
    }
    public static bool TryGetRandomName2ByJob(int job, out List<string> list)
    {
        list = null;
        return !randomName2Dict.IsNullOrEmpty() && randomName2Dict.TryGetValue(job, out list);
    }
}
Main/Config/PartialConfigs/RandomNameConfig.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6a7049648c8e9ff428d119302bbd4800
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA123_tagUpdatePlayerNameCount.cs
New file
@@ -0,0 +1,12 @@
using UnityEngine;
using System.Collections;
//A1 23 角色改名次数 #tagUpdatePlayerNameCount
public class DTCA123_tagUpdatePlayerNameCount : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HA123_tagUpdatePlayerNameCount vNetData = vNetPack as HA123_tagUpdatePlayerNameCount;
        RenameManager.Instance.UpdatePlayerNameCount(vNetData);
    }
}
Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA123_tagUpdatePlayerNameCount.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fe116c76d9a7fb64cae48b1ccf2620bc
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA921_tagSCRenameResult.cs
New file
@@ -0,0 +1,12 @@
using UnityEngine;
using System.Collections;
// A9 21 角色改名结果 #tagSCRenameResult
public class DTCA921_tagSCRenameResult : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HA921_tagSCRenameResult vNetData = vNetPack as HA921_tagSCRenameResult;
        RenameManager.Instance.UpdateRenameResult(vNetData);
    }
}
Main/Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA921_tagSCRenameResult.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 13b012d2181362849a84ed5b9201d225
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -76,7 +76,6 @@
        Register(typeof(HB120_tagMCZhanlingInfo), typeof(DTCB120_tagMCZhanlingInfo));
        Register(typeof(HA311_tagMCSyncRealmInfo), typeof(DTCA311_tagMCSyncRealmInfo));
        Register(typeof(HB110_tagMCTaskInfo), typeof(DTCB110_tagMCTaskInfo));
        Register(typeof(HA921_tagUpdatePlayerNameResult), typeof(DTCA921_tagUpdatePlayerNameResult));
        Register(typeof(H3202_tagServerResponse), typeof(DTC3202_tagServerResponse));
        Register(typeof(HA130_tagMCViewBillboardRet), typeof(DTCA130_tagMCViewBillboardRet));
        Register(typeof(HB419_tagSCObjHPRefresh), typeof(DTCB419_tagSCObjHPRefresh));
@@ -124,6 +123,8 @@
        Register(typeof(HA342_tagSCSuccessAwardRecordList), typeof(DTCA342_tagSCSuccessAwardRecordList));
        Register(typeof(HB128_tagSCLLMJInfo), typeof(DTCB128_tagSCLLMJInfo));
        Register(typeof(HA30D_tagSCDaySignInfo), typeof(DTCA30D_tagSCDaySignInfo));
        Register(typeof(HA123_tagUpdatePlayerNameCount), typeof(DTCA123_tagUpdatePlayerNameCount));
        Register(typeof(HA921_tagSCRenameResult), typeof(DTCA921_tagSCRenameResult));
    }
    //主工程注册封包
Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA123_tagUpdatePlayerNameCount.cs
New file
@@ -0,0 +1,17 @@
using UnityEngine;
using System.Collections;
//A1 23 角色改名次数 #tagUpdatePlayerNameCount
public class HA123_tagUpdatePlayerNameCount : GameNetPackBasic {
    public uint Count;    //改名次数
    public HA123_tagUpdatePlayerNameCount () {
        _cmd = (ushort)0xA123;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out Count, vBytes, NetDataType.DWORD);
    }
}
Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA123_tagUpdatePlayerNameCount.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 22a9f002b7d6ce248b9ea930161aea99
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Core/NetworkPackage/ServerPack/HA9_Function/HA921_tagSCRenameResult.cs
New file
@@ -0,0 +1,17 @@
using UnityEngine;
using System.Collections;
// A9 21 角色改名结果 #tagSCRenameResult
public class HA921_tagSCRenameResult : GameNetPackBasic {
    public string PlayerName;    // 新名字
    public HA921_tagSCRenameResult () {
        _cmd = (ushort)0xA921;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out PlayerName, vBytes, NetDataType.Chars, 33);
    }
}
Main/Core/NetworkPackage/ServerPack/HA9_Function/HA921_tagSCRenameResult.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 36721f75d20b1bc4dbed1a1b80411885
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Main.cs
@@ -86,6 +86,7 @@
        managers.Add(TianziBillboradManager.Instance);
        managers.Add(ExpSecretCollectionManager.Instance);
        managers.Add(SignManager.Instance);
        managers.Add(RenameManager.Instance);
        foreach (var manager in managers)
        {
            manager.Init();
Main/System/Main/MainWin.cs
@@ -28,7 +28,7 @@
    [SerializeField] UIEffectPlayer openCloseAnim;
    [SerializeField] FillTween cdTween;
    [SerializeField] Text hammerText;
    bool isForcePlayFightUIAnim = true; //强制播放战斗锤子框动画
    public static event Action TabChangeEvent;
@@ -36,7 +36,10 @@
    {
        base.InitComponent();
        avatarCell.button.AddListener(() => { });
        avatarCell.button.SetListener(() =>
        {
            UIManager.Instance.OpenWindow<PlayerProfileWin>();
        });
    }
    void Display()
@@ -50,6 +53,7 @@
    {
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
        AutoFightModel.Instance.OnFightEvent += OnSkillCast;
        RenameManager.Instance.OnUpdateRenameResultEvent += OnUpdateRenameResultEvent;
        base.OnPreOpen();
        // 刷新UI
@@ -60,17 +64,22 @@
    {
        PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
        AutoFightModel.Instance.OnFightEvent -= OnSkillCast;
        RenameManager.Instance.OnUpdateRenameResultEvent -= OnUpdateRenameResultEvent;
        base.OnPreClose();
        isForcePlayFightUIAnim = true;
    }
    private void OnUpdateRenameResultEvent()
    {
        Display();
    }
    void DisplayTopBar()
    {
        topBar.SetActive(functionOrder == 0 || functionOrder == 2);
    }
    //战斗按钮动画
    void ClickAnimation(int index)
    {
@@ -199,7 +208,7 @@
        {
            return;
        }
        ClickAnimation(index);
        // 更新当前选中的标签索引
@@ -433,6 +442,6 @@
        OnTabButtonClicked(lastWinOrder);
    }
    #endregion
}
Main/System/PhantasmPavilion/AvatarCell.cs
@@ -56,6 +56,7 @@
        {
            if (m_button == null)
            {
                LoadPrefab();
                m_button = this.GetComponent<ButtonEx>("AvatarCell/Img_BG");
            }
            return m_button;
Main/System/PlayerProfile.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d96838ad917e38e418d0c8df7594ac01
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/PlayerProfile/ExchangeCodeWin.cs
New file
@@ -0,0 +1,89 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ExchangeCodeWin : UIBase
{
    [SerializeField] InputField input;
    [SerializeField] Button receiveBtn;
    const string exchangeUrl = "http://gamecenter.secondworld.net.cn:53003/Coupon/CouponCode.php?";
    bool isCool = false;
    float time = 0;
    protected override void InitComponent()
    {
        base.InitComponent();
        receiveBtn.AddListener(ClickRecevieBtn);
    }
    protected override void OnPreOpen()
    {
        base.OnPreOpen();
        time = 0;
        isCool = false;
        InitUI();
    }
    protected override void OnPreClose()
    {
        base.OnPreClose();
    }
    void LateUpdate()
    {
        if (isCool)
        {
            time += Time.deltaTime;
            if (time >= 3)
            {
                time = 0;
                isCool = false;
            }
        }
    }
    private void InitUI()
    {
        input.text = string.Empty;
    }
    private void ClickRecevieBtn()
    {
        if (isCool) return;
        string passward = input.text;
        if (string.IsNullOrEmpty(passward))
        {
            SysNotifyMgr.Instance.ShowTip("InputExchangeCode");
            return;
        }
        else
        {
            isCool = true;
            var tables = new Dictionary<string, string>();
            tables["channel"] = VersionConfig.Get().appId;
            tables["code"] = passward;
#if UNITY_EDITOR
            //tables["accid"] = ModelCenter.Instance.GetModel<LoginModel>().accountBuf;
            tables["accid"] = PlayerDatas.Instance.baseData.AccID;
#else
                tables["accid"] = ynmbxxjUtil.Instance.FreePlatformInfo.account;
#endif
            tables["sid"] = ServerListCenter.Instance.currentServer.region_flag.ToString();
            tables["pushurl"] = ServerListCenter.Instance.currentServer.region_domain;
            tables["spid"] = VersionConfig.Get().SpID;
            tables["roleid"] = UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName);
            tables["level"] = PlayerDatas.Instance.baseData.LV.ToString();
            tables["viplevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString();
            HttpRequest.Instance.RequestHttpGet(StringUtility.Contact(exchangeUrl, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType, 1, null);
        }
        // if (passward.Length > 1)
        // {
        //     string wxCode = passward.Substring(0, 2);
        //     if (wxCode == "wx")
        //     {
        //         WindowCenter.Instance.Close<WelfareWin>();
        //     }
        // }
    }
}
Main/System/PlayerProfile/ExchangeCodeWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4fc65570fe03ebc41bddb56d98345fce
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/PlayerProfile/PlayerProfileWin.cs
New file
@@ -0,0 +1,86 @@
using UnityEngine;
public class PlayerProfileWin : UIBase
{
    [SerializeField] AvatarCell avatarCell;
    [SerializeField] OfficialTitleCell officialTitleCell;
    [SerializeField] TextEx txtPlayerName;
    [SerializeField] TextEx txtFightPoint;
    [SerializeField] TextEx txtPlayerID;
    [SerializeField] TextEx txtServerName;
    [SerializeField] TextEx txtFamilyName;
    [SerializeField] ButtonEx btnSetting;
    [SerializeField] ButtonEx btnAnnouncement;
    [SerializeField] ButtonEx btnCustomerService;
    [SerializeField] ButtonEx btnRedemptionCode;
    [SerializeField] ButtonEx btnForum;
    [SerializeField] ButtonEx btnAssistant;
    [SerializeField] ButtonEx btnGamingCommunity;
    [SerializeField] ButtonEx btnSwitchServer;
    [SerializeField] ButtonEx btnSyncPlatformAvatar;
    [SerializeField] ButtonEx btnCopy;
    [SerializeField] ButtonEx btnChangeName;
    [SerializeField] ButtonEx btnText1;
    [SerializeField] ButtonEx btnText2;
    protected override void InitComponent()
    {
        base.InitComponent();
        btnSetting.SetListener(() => { UIManager.Instance.OpenWindow<SystemSetWin>(); });
        btnAnnouncement.SetListener(() => { GameNotice.OpenGameNoticeForce(); });
        btnSwitchServer.SetListener(() => { GameNetSystem.Instance.LoginOut(); });
        btnRedemptionCode.SetListener(() => { UIManager.Instance.OpenWindow<ExchangeCodeWin>(); });
        btnCopy.SetListener(() =>
        {
            UIHelper.CopyToClipboard(PlayerDatas.Instance.baseData.PlayerID.ToString());
            SysNotifyMgr.Instance.ShowTip("CopySuccess");
        });
        btnChangeName.SetListener(() => { UIManager.Instance.OpenWindow<RenameWin>(); });
        btnText1.SetListener(() =>
        {
            GameAgeWarnWin.data = 1;
            UIManager.Instance.OpenWindow<GameAgeWarnWin>();
        });
        btnText2.SetListener(() =>
        {
            GameAgeWarnWin.data = 2;
            UIManager.Instance.OpenWindow<GameAgeWarnWin>();
        });
    }
    protected override void OnPreOpen()
    {
        base.OnPreOpen();
        RenameManager.Instance.OnUpdatePlayerNameCountEvent += OnUpdatePlayerNameCount;
        RenameManager.Instance.OnUpdateRenameResultEvent += OnUpdateRenameResultEvent;
        Display();
    }
    protected override void OnPreClose()
    {
        base.OnPreClose();
        RenameManager.Instance.OnUpdatePlayerNameCountEvent -= OnUpdatePlayerNameCount;
        RenameManager.Instance.OnUpdateRenameResultEvent -= OnUpdateRenameResultEvent;
    }
    private void OnUpdateRenameResultEvent()
    {
        Display();
    }
    private void OnUpdatePlayerNameCount()
    {
        Display();
    }
    void Display()
    {
        txtPlayerName.text = PlayerDatas.Instance.baseData.PlayerName;
        txtFightPoint.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPower);
        txtPlayerID.text = Language.Get("PlayerProfile10", PlayerDatas.Instance.baseData.PlayerID.ToString());
        txtServerName.text = Language.Get("PlayerProfile11", ServerListCenter.Instance.GetServerName(UIHelper.GetServerIDByAccount(PlayerDatas.Instance.baseData.AccID)));
        txtFamilyName.text = Language.Get("PlayerProfile12", PlayerDatas.Instance.fairyData.HasFairy ? PlayerDatas.Instance.baseData.FamilyName : Language.Get("PlayerProfile14"));
        avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
                                                    PlayerDatas.Instance.baseData.face,
                                                    PlayerDatas.Instance.baseData.facePic));
        officialTitleCell.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
    }
}
Main/System/PlayerProfile/PlayerProfileWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ea72bcc95f8931247844dde3088e0440
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/PlayerProfile/RenameManager.cs
New file
@@ -0,0 +1,153 @@
using System;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
public class RenameManager : GameSystemManager<RenameManager>
{
    public int moneyType;
    public int moneyNeed;
    public override void Init()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
        FuncConfigConfig config = FuncConfigConfig.Get("PlayerRename");
        int[] arr = ConfigParse.GetMultipleStr<int>(config.Numerical3);
        moneyType = arr[0];
        moneyNeed = arr[1];
    }
    public override void Release()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
    }
    private void OnBeforePlayerDataInitializeEvent()
    {
        RenameManagerCount = 0;
    }
    public event Action OnUpdateRenameResultEvent;
    public void UpdateRenameResult(HA921_tagSCRenameResult vNetData)
    {
        if (vNetData == null)
            return;
        PlayerDatas.Instance.baseData.PlayerName = UIHelper.ServerStringTrim(vNetData.PlayerName);
        SysNotifyMgr.Instance.ShowTip("RenameSuccess");
        OnUpdateRenameResultEvent?.Invoke();
    }
    int RenameManagerCount = 0; // 改名次数 为1 代表已经首次改名过,未改过上线不会收到该封包
    public event Action OnUpdatePlayerNameCountEvent;
    public void UpdatePlayerNameCount(HA123_tagUpdatePlayerNameCount vNetData)
    {
        if (vNetData == null)
            return;
        RenameManagerCount = (int)vNetData.Count;
        OnUpdatePlayerNameCountEvent?.Invoke();
    }
    public void SendRenamePack(string name)
    {
        CA122_tagUpdatePlayerName pack = new CA122_tagUpdatePlayerName();
        pack.NewName = name;
        pack.NewNameLen = (byte)GetUTF8InfoLen(name);
        GameNetSystem.Instance.SendInfo(pack);
    }
    public bool IsFirstRename()
    {
        return RenameManagerCount == 0;
    }
    public string GetRondomNameByJob(int job)
    {
        if (!RandomNameConfig.TryGetRandomName1ByJob(job, out var randomNameList1))
            return string.Empty;
        if (!RandomNameConfig.TryGetRandomName2ByJob(job, out var randomNameList2))
            return string.Empty;
        int randomNameIndex1 = UnityEngine.Random.Range(0, randomNameList1.Count - 1);
        int randomNameIndex2 = UnityEngine.Random.Range(0, randomNameList2.Count - 1);
        return StringUtility.Contact(randomNameList1[randomNameIndex1], randomNameList2[randomNameIndex2]);
    }
    public bool CheckNameLimit(string name, out int errorCode)
    {
        errorCode = 0;
        if (string.IsNullOrEmpty(name))
        {
            errorCode = 0;
            return false;
        }
        if (name.Length < 4)
        {
            errorCode = 1;
            return false;
        }
        if (name.Length > 12)
        {
            errorCode = 2;
            return false;
        }
        if (DirtyWordConfig.IsDirtWord(name) || UIHelper.HasSpecialCharac(name)
            || DirtyNameConfig.IsDirtName(name))
        {
            errorCode = 3;
            return false;
        }
        if (name == PlayerDatas.Instance.baseData.PlayerName)
        {
            errorCode = 4;
            return false;
        }
        return true;
    }
    public void ShowNameErrorTip(int _errorCode)
    {
        switch (_errorCode)
        {
            case 0:
                //空
                SysNotifyMgr.Instance.ShowTip("FamilyNameChangeNoNull");
                break;
            case 1:
                // 名字长度过短
                SysNotifyMgr.Instance.ShowTip("NameError4");
                break;
            case 2:
                // 名字长度过长
                SysNotifyMgr.Instance.ShowTip("NameError5");
                break;
            case 3:
                // 脏字
                SysNotifyMgr.Instance.ShowTip("NameSensitive");
                break;
            case 4:
                // 名字已存在
                SysNotifyMgr.Instance.ShowTip("NameExists");
                break;
        }
    }
    public string GetSafeRandomName()
    {
        int job = PlayerDatas.Instance.baseData.Job;
        for (int i = 0; i < 9999; i++)
        {
            string name = GetRondomNameByJob(job);
            if (CheckNameLimit(name, out int errorCode))
                return name;
        }
        return string.Empty;
    }
    public static int GetUTF8InfoLen(string msg)
    {
        return Encoding.UTF8.GetBytes(msg).Length;
    }
}
Main/System/PlayerProfile/RenameManager.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b180558cd4c7e69429210cc1750a4789
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/PlayerProfile/RenameWin.cs
New file
@@ -0,0 +1,93 @@
using System;
using UnityEngine;
using UnityEngine.UI;
public class RenameWin : UIBase
{
    [SerializeField] InputField input;
    [SerializeField] Button btnOk;
    [SerializeField] Button btnRandom;
    [SerializeField] TextEx txtFirst;
    [SerializeField] TextEx txtMoney;
    [SerializeField] ImageEx imgMoney;
    RenameManager manager { get { return RenameManager.Instance; } }
    protected override void InitComponent()
    {
        base.InitComponent();
        btnRandom.SetListener(() =>
        {
            input.text = manager.GetSafeRandomName();
        });
        btnOk.SetListener(() =>
        {
            bool isFirstRename = manager.IsFirstRename();
            if (!isFirstRename && !UIHelper.CheckMoneyCount(manager.moneyType, manager.moneyNeed))
            {
                string title = Language.Get("Mail101");
                string info = Language.Get("PlayerProfile22");
                ConfirmCancel.ShowPopConfirm(title, info, (bool isOk) =>
                {
                    if (isOk)
                    {
                    }
                    else
                    {
                        CloseWindow();
                    }
                });
                return;
            }
            if (!manager.CheckNameLimit(input.text, out var errorCode))
            {
                manager.ShowNameErrorTip(errorCode);
                return;
            }
            manager.SendRenamePack(input.text);
        });
    }
    protected override void OnPreOpen()
    {
        base.OnPreOpen();
        manager.OnUpdatePlayerNameCountEvent += OnUpdatePlayerNameCount;
        manager.OnUpdateRenameResultEvent += OnUpdateRenameResultEvent;
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
        Display();
    }
    protected override void OnPreClose()
    {
        base.OnPreClose();
        manager.OnUpdatePlayerNameCountEvent -= OnUpdatePlayerNameCount;
        manager.OnUpdateRenameResultEvent -= OnUpdateRenameResultEvent;
        PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
    }
    private void PlayerDataRefresh(PlayerDataType type)
    {
        Display();
    }
    private void OnUpdateRenameResultEvent()
    {
        Display();
    }
    private void OnUpdatePlayerNameCount()
    {
        Display();
    }
    void Display()
    {
        bool isFirstRename = manager.IsFirstRename();
        txtFirst.SetActive(isFirstRename);
        txtMoney.SetActive(!isFirstRename);
        imgMoney.SetIconWithMoneyType(manager.moneyType);
        txtMoney.text = UIHelper.ShowUseMoney(manager.moneyType, manager.moneyNeed);
    }
}
Main/System/PlayerProfile/RenameWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 31a79aad128b21e449af2a82bd367cfe
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/PlayerProfile/SystemSetWin.cs
New file
@@ -0,0 +1,40 @@
using UnityEngine;
using UnityEngine.UI;
public class SystemSetWin : UIBase
{
    [SerializeField] Slider musicSlider;
    [SerializeField] Slider soundEffectSlider;
    protected override void InitComponent()
    {
        base.InitComponent();
    }
    protected override void OnPreOpen()
    {
        base.OnPreOpen();
        musicSlider.onValueChanged.RemoveListener(OnSliderBgMusic);
        musicSlider.onValueChanged.AddListener(OnSliderBgMusic);
        soundEffectSlider.onValueChanged.RemoveListener(OnSliderSoundEffect);
        soundEffectSlider.onValueChanged.AddListener(OnSliderSoundEffect);
        musicSlider.value = SystemSetting.Instance.GetSoundVolume();
        soundEffectSlider.value = SystemSetting.Instance.GetSoundEffect();
    }
    protected override void OnPreClose()
    {
        base.OnPreClose();
    }
    private void OnSliderSoundEffect(float arg0)
    {
        SystemSetting.Instance.SetSoundEffect(arg0);
    }
    private void OnSliderBgMusic(float arg0)
    {
        SystemSetting.Instance.SetSoundVolume(arg0);
    }
}
Main/System/PlayerProfile/SystemSetWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 30dc70a9e7b94c34a8a1ea801f59837f
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/SystemSetting/SystemSetting.cs
@@ -42,7 +42,7 @@
    public float GetSoundVolume()
    {
        return LocalSave.GetFloat(SOUND_VOLUME_KEY, .55f);
        return LocalSave.GetFloat(SOUND_VOLUME_KEY, 1.0f);
    }
    public void SetSoundEffect(float value)
@@ -52,7 +52,7 @@
    public float GetSoundEffect()
    {
        return LocalSave.GetFloat(SOUND_EFFECT_KEY, .8f);
        return LocalSave.GetFloat(SOUND_EFFECT_KEY, 1.0f);
    }
    public void SetGameFps(GameFps _frame)