Explorar o código

角色面板界面

zhenglijun hai 1 semana
pai
achega
64b53c3435
Modificáronse 60 ficheiros con 1410 adicións e 27 borrados
  1. 20 0
      Assets/AssetConfigs/Addressable/ProductAssetManifest.asset
  2. BIN=BIN
      Assets/Res/Addressable/FGUI/Common/Common_fui.bytes
  3. BIN=BIN
      Assets/Res/Addressable/FGUI/DragonEgg/DragonEgg_fui.bytes
  4. 8 0
      Assets/Res/Addressable/FGUI/Player.meta
  5. BIN=BIN
      Assets/Res/Addressable/FGUI/Player/Player_atlas0.png
  6. 133 0
      Assets/Res/Addressable/FGUI/Player/Player_atlas0.png.meta
  7. BIN=BIN
      Assets/Res/Addressable/FGUI/Player/Player_fui.bytes
  8. 7 0
      Assets/Res/Addressable/FGUI/Player/Player_fui.bytes.meta
  9. 0 0
      Assets/Res/Addressable/Playable/info_job_1001_1_SkeletonData.asset
  10. 0 0
      Assets/Res/Addressable/Playable/info_job_1001_1_SkeletonData.asset.meta
  11. 8 0
      Assets/Res/Addressable/UI/Atlas/SkillIcon.meta
  12. BIN=BIN
      Assets/Res/Addressable/UI/Atlas/SkillIcon/SkillIcon_201711.png
  13. 133 0
      Assets/Res/Addressable/UI/Atlas/SkillIcon/SkillIcon_201711.png.meta
  14. 93 0
      Assets/Res/Addressable/UI/Atlas/SkillIcon/atlas_rauas_skillicon.spriteatlas
  15. 8 0
      Assets/Res/Addressable/UI/Atlas/SkillIcon/atlas_rauas_skillicon.spriteatlas.meta
  16. 8 0
      Assets/Res/Addressable/UI/Atlas/TitleIcon.meta
  17. BIN=BIN
      Assets/Res/Addressable/UI/Atlas/TitleIcon/Title_001.png
  18. 133 0
      Assets/Res/Addressable/UI/Atlas/TitleIcon/Title_001.png.meta
  19. 92 0
      Assets/Res/Addressable/UI/Atlas/TitleIcon/atlas_rauat_titleicon.spriteatlas
  20. 8 0
      Assets/Res/Addressable/UI/Atlas/TitleIcon/atlas_rauat_titleicon.spriteatlas.meta
  21. 4 2
      Assets/Scripts/Business/Runtime/Data/DragonEggService.cs
  22. 17 0
      Assets/Scripts/Business/Runtime/Data/PlayerData.cs
  23. 1 0
      Assets/Scripts/Business/Runtime/Define/StringDefine.cs
  24. 1 0
      Assets/Scripts/Business/Runtime/Event/EventDefine.cs
  25. 0 2
      Assets/Scripts/Business/Runtime/FGUI/DragonEgg/Box/DragonEggBoxVM.Gen.cs
  26. 4 4
      Assets/Scripts/Business/Runtime/FGUI/Main/HomeBottomPanel/MainHomeBottomPanelCtrl.cs
  27. 8 0
      Assets/Scripts/Business/Runtime/FGUI/Player.meta
  28. 8 0
      Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel.meta
  29. 306 0
      Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelCtrl.cs
  30. 11 0
      Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelCtrl.cs.meta
  31. 83 0
      Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelVM.Gen.cs
  32. 11 0
      Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelVM.Gen.cs.meta
  33. 34 0
      Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelView.cs
  34. 11 0
      Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelView.cs.meta
  35. 8 0
      Assets/Scripts/Business/Runtime/Nodes/Player.meta
  36. 31 0
      Assets/Scripts/Business/Runtime/Nodes/Player/PlayerNode.cs
  37. 11 0
      Assets/Scripts/Business/Runtime/Nodes/Player/PlayerNode.cs.meta
  38. 14 0
      Assets/Scripts/Business/Runtime/Nodes/Player/UIComponent.cs
  39. 11 0
      Assets/Scripts/Business/Runtime/Nodes/Player/UIComponent.cs.meta
  40. 6 4
      fl-fgui-project/assets/Common/Components/UseBtn.xml
  41. 4 4
      fl-fgui-project/assets/Common/ConfirmationBox.xml
  42. 10 11
      fl-fgui-project/assets/DragonEgg/Box.xml
  43. 15 0
      fl-fgui-project/assets/Player/Components/ExpBar.xml
  44. 16 0
      fl-fgui-project/assets/Player/Components/IconBtn.xml
  45. 12 0
      fl-fgui-project/assets/Player/Components/InfoBtn.xml
  46. 17 0
      fl-fgui-project/assets/Player/Components/NotOpenBtn.xml
  47. 13 0
      fl-fgui-project/assets/Player/Components/SkillBtn.xml
  48. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgArrow.png
  49. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgArtifact.png
  50. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgBlue.png
  51. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgContract.png
  52. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgExp.png
  53. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgExpBg.png
  54. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgJewelry.png
  55. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgLock.png
  56. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgMount.png
  57. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgPurple.png
  58. BIN=BIN
      fl-fgui-project/assets/Player/Images/imgTop.png
  59. 69 0
      fl-fgui-project/assets/Player/MainPanel.xml
  60. 23 0
      fl-fgui-project/assets/Player/package.xml

+ 20 - 0
Assets/AssetConfigs/Addressable/ProductAssetManifest.asset

@@ -497,6 +497,10 @@ MonoBehaviour:
     addressableName: icon9
     assetGUID: 5f96b07c7caa7f84db1236359e8b0d43
     relativePath: 
+  - addressableId: 2613565979
+    addressableName: info_job_1001_1_skeletondata
+    assetGUID: 85c88b2812f3e494db409b5faedb4576
+    relativePath: 
   - addressableId: 1407873555
     addressableName: item_frame1
     assetGUID: 65f9799c9fd58884db9251235bcbe9da
@@ -865,6 +869,14 @@ MonoBehaviour:
     addressableName: player
     assetGUID: 0b6f6d740fa3cac42b6d6cee976db337
     relativePath: 
+  - addressableId: 1686459426
+    addressableName: player_atlas0
+    assetGUID: a0738fef6af078d4886de607303540c5
+    relativePath: 
+  - addressableId: 4030092561
+    addressableName: player_fui
+    assetGUID: 869f88cb0f0b5a045a9ff859ccb74c80
+    relativePath: 
   - addressableId: 1767017040
     addressableName: playerbattleinfo
     assetGUID: 7b192704190cd2448a25bcdf8b9b43b8
@@ -881,6 +893,10 @@ MonoBehaviour:
     addressableName: simpleconfigtable
     assetGUID: a88889adb845e8641b4e9f3ad89d1dfd
     relativePath: 
+  - addressableId: 213130530
+    addressableName: skillicon_201711
+    assetGUID: a8ebcff948302dc40a6796275173488c
+    relativePath: 
   - addressableId: 2169794763
     addressableName: skilltable
     assetGUID: fd528f8d76b5d1c4a9877afbeedcbea0
@@ -893,6 +909,10 @@ MonoBehaviour:
     addressableName: testmainmap
     assetGUID: 1952534c73feb644bbcaa7e3c9884bbc
     relativePath: 
+  - addressableId: 3010334460
+    addressableName: title_001
+    assetGUID: 5d5952a0fc411fd4c830d373dce8e439
+    relativePath: 
   - addressableId: 2620984320
     addressableName: uihpadd
     assetGUID: fd75e320d16355f499dee7ab0132c4ca

BIN=BIN
Assets/Res/Addressable/FGUI/Common/Common_fui.bytes


BIN=BIN
Assets/Res/Addressable/FGUI/DragonEgg/DragonEgg_fui.bytes


+ 8 - 0
Assets/Res/Addressable/FGUI/Player.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: WitKs36qAH/t1j2G8xAb1g4IU0NM9DeanRgou12dJAKzuUwXMh+osDQ=
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN=BIN
Assets/Res/Addressable/FGUI/Player/Player_atlas0.png


+ 133 - 0
Assets/Res/Addressable/FGUI/Player/Player_atlas0.png.meta

@@ -0,0 +1,133 @@
+fileFormatVersion: 2
+guid: XnoYtiL7Bi1lUGM/UxnT7AinebJ5lw3abYWswZvTBde4fs7R9NZ/TUU=
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+    flipGreenChannel: 0
+  isReadable: 0
+  webStreaming: 0
+  priorityLevel: 0
+  uploadedMode: 2
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMipmapLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  swizzle: 50462976
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    maxPlaceholderSize: 32
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    maxPlaceholderSize: 32
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    maxPlaceholderSize: 32
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  mipmapLimitGroupName: 
+  pSDRemoveMatte: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN=BIN
Assets/Res/Addressable/FGUI/Player/Player_fui.bytes


+ 7 - 0
Assets/Res/Addressable/FGUI/Player/Player_fui.bytes.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: B3wW4yKlACl5fr1P92XIerO9WnmUJTpQryFg9+A5CN4ADZTT3ijWpWc=
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 0 - 0
Assets/Res/Static/Map/Models/Player/info_job_1001_1/info_job_1001_1_SkeletonData.asset → Assets/Res/Addressable/Playable/info_job_1001_1_SkeletonData.asset


+ 0 - 0
Assets/Res/Static/Map/Models/Player/info_job_1001_1/info_job_1001_1_SkeletonData.asset.meta → Assets/Res/Addressable/Playable/info_job_1001_1_SkeletonData.asset.meta


+ 8 - 0
Assets/Res/Addressable/UI/Atlas/SkillIcon.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: XXIdtC+oVn3c/1L3bnc5VvFantbKyKzgMXZ6jUhBfVloPol9qyfJM2c=
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN=BIN
Assets/Res/Addressable/UI/Atlas/SkillIcon/SkillIcon_201711.png


+ 133 - 0
Assets/Res/Addressable/UI/Atlas/SkillIcon/SkillIcon_201711.png.meta

@@ -0,0 +1,133 @@
+fileFormatVersion: 2
+guid: XnJK53n7BXJHMY1VkSnXtf8LcgT5w2VP+dB0oE+mVOCn3sNnqQpXiag=
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+    flipGreenChannel: 0
+  isReadable: 0
+  webStreaming: 0
+  priorityLevel: 0
+  uploadedMode: 2
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMipmapLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  swizzle: 50462976
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    maxPlaceholderSize: 32
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    maxPlaceholderSize: 32
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    maxPlaceholderSize: 32
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  mipmapLimitGroupName: 
+  pSDRemoveMatte: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 93 - 0
Assets/Res/Addressable/UI/Atlas/SkillIcon/atlas_rauas_skillicon.spriteatlas

@@ -0,0 +1,93 @@
+%YAML 1.1
+%TAG !u! tag:yousandi.cn,2023:
+--- !u!687078895 &4343727234628468602
+SpriteAtlas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: atlas_rauas_skillicon
+  serializedVersion: 2
+  m_EditorData:
+    serializedVersion: 2
+    textureSettings:
+      serializedVersion: 3
+      anisoLevel: 1
+      compressionQuality: 50
+      maxTextureSize: 2048
+      textureCompression: 0
+      filterMode: 1
+      generateMipMaps: 0
+      readable: 0
+      crunchedCompression: 0
+      webStreaming: 0
+      sRGB: 1
+    platformSettings:
+    - serializedVersion: 3
+      m_BuildTarget: DefaultTexturePlatform
+      m_MaxTextureSize: 2048
+      m_MaxPlaceholderSize: 0
+      m_ResizeAlgorithm: 0
+      m_TextureFormat: -1
+      m_TextureCompression: 1
+      m_CompressionQuality: 50
+      m_CrunchedCompression: 0
+      m_AllowsAlphaSplitting: 0
+      m_Overridden: 0
+      m_IgnorePlatformSupport: 0
+      m_AndroidETC2FallbackOverride: 0
+      m_ForceMaximumCompressionQuality_BC6H_BC7: 0
+    - serializedVersion: 3
+      m_BuildTarget: Android
+      m_MaxTextureSize: 2048
+      m_MaxPlaceholderSize: 0
+      m_ResizeAlgorithm: 0
+      m_TextureFormat: 47
+      m_TextureCompression: 1
+      m_CompressionQuality: 50
+      m_CrunchedCompression: 0
+      m_AllowsAlphaSplitting: 0
+      m_Overridden: 1
+      m_IgnorePlatformSupport: 0
+      m_AndroidETC2FallbackOverride: 0
+      m_ForceMaximumCompressionQuality_BC6H_BC7: 0
+    - serializedVersion: 3
+      m_BuildTarget: iPhone
+      m_MaxTextureSize: 2048
+      m_MaxPlaceholderSize: 0
+      m_ResizeAlgorithm: 0
+      m_TextureFormat: 49
+      m_TextureCompression: 1
+      m_CompressionQuality: 50
+      m_CrunchedCompression: 0
+      m_AllowsAlphaSplitting: 0
+      m_Overridden: 1
+      m_IgnorePlatformSupport: 0
+      m_AndroidETC2FallbackOverride: 0
+      m_ForceMaximumCompressionQuality_BC6H_BC7: 0
+    packingSettings:
+      serializedVersion: 2
+      padding: 2
+      blockOffset: 1
+      allowAlphaSplitting: 0
+      enableRotation: 0
+      enableTightPacking: 0
+      enableAlphaDilation: 0
+    secondaryTextureSettings: {}
+    variantMultiplier: 1
+    packables:
+    - {fileID: 102900000, guid: b82155561e4ccc942aff38eb38bc854e, type: 3}
+    bindAsDefault: 1
+    isAtlasV2: 0
+    cachedData: {fileID: 0}
+    packedSpriteRenderDataKeys:
+    - a8ebcff948302dc40a6796275173488c: 21300000
+  m_MasterAtlas: {fileID: 0}
+  m_PackedSprites:
+  - {fileID: 21300000, guid: a8ebcff948302dc40a6796275173488c, type: 3}
+  m_PackedSpriteNamesToIndex:
+  - SkillIcon_201711
+  m_RenderDataMap: {}
+  m_Tag: atlas_rauas_skillicon
+  m_IsVariant: 0
+  m_IsPlaceholder: 0

+ 8 - 0
Assets/Res/Addressable/UI/Atlas/SkillIcon/atlas_rauas_skillicon.spriteatlas.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: DC4dtSKvUHzjrNpyDKMSFb798YYSIGGhBQxkv9PY4Gk2a05eGx8dOuo=
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 4343727234628468602
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Res/Addressable/UI/Atlas/TitleIcon.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: CXkWtHuqWi0GU/KXQRFp+AnCtk3ADDFmFrIYO9gAY7XUMSkApShxSCM=
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN=BIN
Assets/Res/Addressable/UI/Atlas/TitleIcon/Title_001.png


+ 133 - 0
Assets/Res/Addressable/UI/Atlas/TitleIcon/Title_001.png.meta

@@ -0,0 +1,133 @@
+fileFormatVersion: 2
+guid: Ci4avC+vAnsga2Vf+ZLfuOW8j16Cho7qHLlD7QPfst4pBPYl/Dcn+wg=
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+    flipGreenChannel: 0
+  isReadable: 0
+  webStreaming: 0
+  priorityLevel: 0
+  uploadedMode: 2
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMipmapLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  swizzle: 50462976
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    maxPlaceholderSize: 32
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    maxPlaceholderSize: 32
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    maxPlaceholderSize: 32
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  mipmapLimitGroupName: 
+  pSDRemoveMatte: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 92 - 0
Assets/Res/Addressable/UI/Atlas/TitleIcon/atlas_rauat_titleicon.spriteatlas

@@ -0,0 +1,92 @@
+%YAML 1.1
+%TAG !u! tag:yousandi.cn,2023:
+--- !u!687078895 &4343727234628468602
+SpriteAtlas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: atlas_rauat_titleicon
+  serializedVersion: 2
+  m_EditorData:
+    serializedVersion: 2
+    textureSettings:
+      serializedVersion: 3
+      anisoLevel: 1
+      compressionQuality: 50
+      maxTextureSize: 2048
+      textureCompression: 0
+      filterMode: 1
+      generateMipMaps: 0
+      readable: 0
+      crunchedCompression: 0
+      webStreaming: 0
+      sRGB: 1
+    platformSettings:
+    - serializedVersion: 3
+      m_BuildTarget: DefaultTexturePlatform
+      m_MaxTextureSize: 2048
+      m_MaxPlaceholderSize: 0
+      m_ResizeAlgorithm: 0
+      m_TextureFormat: -1
+      m_TextureCompression: 1
+      m_CompressionQuality: 50
+      m_CrunchedCompression: 0
+      m_AllowsAlphaSplitting: 0
+      m_Overridden: 0
+      m_IgnorePlatformSupport: 0
+      m_AndroidETC2FallbackOverride: 0
+      m_ForceMaximumCompressionQuality_BC6H_BC7: 0
+    - serializedVersion: 3
+      m_BuildTarget: Android
+      m_MaxTextureSize: 2048
+      m_MaxPlaceholderSize: 0
+      m_ResizeAlgorithm: 0
+      m_TextureFormat: 47
+      m_TextureCompression: 1
+      m_CompressionQuality: 50
+      m_CrunchedCompression: 0
+      m_AllowsAlphaSplitting: 0
+      m_Overridden: 1
+      m_IgnorePlatformSupport: 0
+      m_AndroidETC2FallbackOverride: 0
+      m_ForceMaximumCompressionQuality_BC6H_BC7: 0
+    - serializedVersion: 3
+      m_BuildTarget: iPhone
+      m_MaxTextureSize: 2048
+      m_MaxPlaceholderSize: 0
+      m_ResizeAlgorithm: 0
+      m_TextureFormat: 49
+      m_TextureCompression: 1
+      m_CompressionQuality: 50
+      m_CrunchedCompression: 0
+      m_AllowsAlphaSplitting: 0
+      m_Overridden: 1
+      m_IgnorePlatformSupport: 0
+      m_AndroidETC2FallbackOverride: 0
+      m_ForceMaximumCompressionQuality_BC6H_BC7: 0
+    packingSettings:
+      serializedVersion: 2
+      padding: 2
+      blockOffset: 1
+      allowAlphaSplitting: 0
+      enableRotation: 0
+      enableTightPacking: 0
+      enableAlphaDilation: 0
+    secondaryTextureSettings: {}
+    variantMultiplier: 1
+    packables:
+    - {fileID: 102900000, guid: 6391a79f0a47e994295b8ab66c5e11c1, type: 3}
+    bindAsDefault: 1
+    isAtlasV2: 0
+    cachedData: {fileID: 0}
+    packedSpriteRenderDataKeys: []
+  m_MasterAtlas: {fileID: 0}
+  m_PackedSprites:
+  - {fileID: 21300000, guid: 8b6458543cadab045bde92a02b23b600, type: 3}
+  m_PackedSpriteNamesToIndex:
+  - vcard_img_mingpian_exhbition_bg
+  m_RenderDataMap: {}
+  m_Tag: atlas_rauat_titleicon
+  m_IsVariant: 0
+  m_IsPlaceholder: 0

+ 8 - 0
Assets/Res/Addressable/UI/Atlas/TitleIcon/atlas_rauat_titleicon.spriteatlas.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: XnhNsy7+BXKWik5SiDz0JuKaWoDKzIi6QF0fVCRp/FN/ft6ekNgNwsk=
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 4343727234628468602
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 4 - 2
Assets/Scripts/Business/Runtime/Data/DragonEggService.cs

@@ -217,14 +217,16 @@ namespace FL.Data
             ItemData.Instance.OnChangeEquip(EEquipType.Weapon, AnalogEquipData(110101, UIDDefine.New(), false));
             ItemData.Instance.OnChangeEquip(EEquipType.Helmet, AnalogEquipData(210201, UIDDefine.New(), false));
             ItemData.Instance.OnChangeEquip(EEquipType.Clothes, AnalogEquipData(310101, UIDDefine.New(), false));
-            //ItemData.Instance.OnChangeEquip(EEquipType.Hand, AnalogEquipData(410101, UIDDefine.New(), false));
+            ItemData.Instance.OnChangeEquip(EEquipType.Hand, AnalogEquipData(410101, UIDDefine.New(), false));
             //ItemData.Instance.OnChangeEquip(EEquipType.Pants, AnalogEquipData(510501, UIDDefine.New(), false));
             //ItemData.Instance.OnChangeEquip(EEquipType.Boots, AnalogEquipData(610101, UIDDefine.New(), false));
         }
         // 测试龙蛋
         private void TestDragonEggData()
         {
-            PlayerData.Instance.Level = 80;
+            PlayerData.Instance.Level = 5;
+            PlayerData.Instance.Exp = 156;
+            PlayerData.Instance.Title = "Title_001";
             DragonEggData.Instance.EggLv = 6;
             DragonEggData.Instance.EggCount = 30;
             DragonEggData.Instance.EggEnergy = 0;

+ 17 - 0
Assets/Scripts/Business/Runtime/Data/PlayerData.cs

@@ -32,6 +32,23 @@ namespace FL.Data
         {
             get; set;
         }
+
+        /// <summary>
+        /// 当前经验值
+        /// </summary>
+        public long Exp
+        { 
+            get; set; 
+        }
+
+        /// <summary>
+        /// 角色称号
+        /// </summary>
+        public string Title
+        {  
+            get; set;
+        }
+
         void IDisposable.Dispose()
         {
             if (_attr != null)

+ 1 - 0
Assets/Scripts/Business/Runtime/Define/StringDefine.cs

@@ -10,5 +10,6 @@ namespace FL
         public static string dragonEggNextLv = "下一等级:{0}";
         public static string sellHightPowerEquip = "出售的装备战力高于当前装备,是否确定?";
         public static string dragonEggsEmpty = "龙裔宝卵数量不足";
+        public static string notOpen = "功能暂未开放,敬请期待";
     }
 }

+ 1 - 0
Assets/Scripts/Business/Runtime/Event/EventDefine.cs

@@ -116,6 +116,7 @@
 
         #region 角色属性变化3500-3599
         AttributeChange = 3500,
+        PlayerExpAdd,
         #endregion
     }
 }

+ 0 - 2
Assets/Scripts/Business/Runtime/FGUI/DragonEgg/Box/DragonEggBoxVM.Gen.cs

@@ -20,7 +20,6 @@ namespace FL.FGUI
     {
         public Controller MenusBtnCtrl { get; private set; }
         public Controller AwardState { get; private set; }
-        public CommonBackGroundNestedView BackGround { get; private set; }
         public DragonEggEquipmentUIView EquipUI { get; private set; }
         public GProgressBar EggPointBar { get; private set; }
         public GLoader3D DragonSpine { get; private set; }
@@ -44,7 +43,6 @@ namespace FL.FGUI
         {
             MenusBtnCtrl = panel.GetController("MenusBtnCtrl");
             AwardState = panel.GetController("AwardState");
-            BackGround = adapter.CreateNested<CommonBackGroundNestedView>(new FguiNested(panel.GetChild("BackGround").asCom), true);
             EquipUI = adapter.CreateNested<DragonEggEquipmentUIView>(new FguiNested(panel.GetChild("EquipUI").asCom), true);
             EggPointBar = panel.GetChild("EggPointBar") as GProgressBar;
             DragonSpine = panel.GetChild("DragonSpine") as GLoader3D;

+ 4 - 4
Assets/Scripts/Business/Runtime/FGUI/Main/HomeBottomPanel/MainHomeBottomPanelCtrl.cs

@@ -86,17 +86,17 @@ namespace FL.FGUI
         {
             return index switch
             {
-                1 =>UIKeys.DragonEggBox,
+                1 =>UIKeys.PlayerMainPanel,
                 2 => UIKeys.PartnerMainPanel,
-                6 => UIKeys.BattleMapBattleMapTest,
+                6 => UIKeys.DragonEggBox,
                 _ => null,
             };
         }
         private int KeyToIndex(UIKey uiKey)
         {
-            if (uiKey == UIKeys.BattleMapBattleMapTest) return 6;
+            if (uiKey == UIKeys.PlayerMainPanel) return 1;
             if (uiKey == UIKeys.PartnerMainPanel) return 2;
-            if (uiKey == UIKeys.DragonEggBox) return 1;
+            if (uiKey == UIKeys.DragonEggBox) return 6;
             return -1;
         }
         private void OnBtnCtrlChanged(EventContext context)

+ 8 - 0
Assets/Scripts/Business/Runtime/FGUI/Player.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: C3gdvS6oU3OpH/wjWQL8fk95Hi36YkHENcnugOmmxDvPMYZduVNQy9o=
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: WSwX4C78V3MOEYAW0CUsn1OWeagNhKPmy98pejiiVhIIfHStlybKuSk=
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 306 - 0
Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelCtrl.cs

@@ -0,0 +1,306 @@
+/// #pkgName FGUI包名
+/// #panelName UIPanel名字
+/// #UIName = $"{#pkgName}{#panelName}" UIKey名字
+/// 该脚本由模板创建
+/// created by cb 2024
+
+using FairyGUI;
+using FL.Data.Items;
+using FL.Data;
+using System.Collections.Generic;
+using XGame.Database;
+using XGame.Framework.UI;
+
+namespace FL.FGUI
+{
+    /// <summary>
+    /// UI逻辑处理类
+    /// </summary>
+    /// <typeparam name=""></typeparam>
+    public partial class PlayerMainPanelCtrl : UIController<PlayerMainPanelVM>
+    {
+        private List<CommonItemBaseView> _equipItemList;
+        private Dictionary<EAttributeType, string> _attributeDescMap;
+
+        protected override void OnEnable(object intent)
+        {
+            AddUIListenres();
+            EventSingle.Instance.AddListener(EventDefine.OnChangeEquip, OnChangeEquip);
+            EventSingle.Instance.AddListener(EventDefine.AttributeChange, OnChangeAttribute); // 角色属性变化
+            EventSingle.Instance.AddListener(EventDefine.PlayerExpAdd, AddPlayerExp);
+            Init();
+            ShowUI();
+        }
+        protected override void OnDisable()
+        {
+            RemoveUIListenres();
+            EventSingle.Instance.RemoveListener(EventDefine.OnChangeEquip, OnChangeEquip);
+            EventSingle.Instance.RemoveListener(EventDefine.AttributeChange, OnChangeAttribute); // 角色属性变化
+            EventSingle.Instance.RemoveListener(EventDefine.PlayerExpAdd, AddPlayerExp);
+
+            if (_equipItemList != null)
+            {
+                _equipItemList.Clear();
+                _equipItemList = null;
+            }
+
+            if (_attributeDescMap != null)
+            {
+                _attributeDescMap.Clear();
+                _attributeDescMap = null;
+            }
+            VM.PlayerSpine.url = string.Empty;
+        }
+        #region UI事件
+        private void AddUIListenres()
+        {
+            VM.AttrInfoBtn.onClick.Add(OnClickAttrInfoBtn);
+            VM.SkillBtn.onClick.Add(OnClickSkillBtn);
+            VM.ChangeBtn.onClick.Add(OnClickChangeBtn);
+            VM.MountBtn.onClick.Add(OnClickMountBtn);
+            VM.ArtifactBtn.onClick.Add(OnClickArtifactBtn);
+            VM.ContractBtn.onClick.Add(OnClickContractBtn);
+            VM.JewelryBtn.onClick.Add(OnClickJewelryBtn);
+            VM.NotOpenBtn1.onClick.Add(OnClickNotOpenBtn1);
+            VM.NotOpenBtn2.onClick.Add(OnClickNotOpenBtn2);
+        }
+        private void RemoveUIListenres()
+        {
+            VM.AttrInfoBtn.onClick.Remove(OnClickAttrInfoBtn);
+            VM.SkillBtn.onClick.Remove(OnClickSkillBtn);
+            VM.ChangeBtn.onClick.Remove(OnClickChangeBtn);
+            VM.MountBtn.onClick.Remove(OnClickMountBtn);
+            VM.ArtifactBtn.onClick.Remove(OnClickArtifactBtn);
+            VM.ContractBtn.onClick.Remove(OnClickContractBtn);
+            VM.JewelryBtn.onClick.Remove(OnClickJewelryBtn);
+            VM.NotOpenBtn1.onClick.Remove(OnClickNotOpenBtn1);
+            VM.NotOpenBtn2.onClick.Remove(OnClickNotOpenBtn2);
+
+        }
+
+        private void OnClickAttrInfoBtn(EventContext context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ShowTips, "显示角色属性详情界面");
+        }
+        private void OnClickSkillBtn(EventContext context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ShowTips, "显示技能详情界面");
+        }
+        private void OnClickChangeBtn(EventContext context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ShowTips, "更换契约技能");
+        }
+        private void OnClickMountBtn(EventContext context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ShowTips, "打开坐骑界面");
+        }
+        private void OnClickArtifactBtn(EventContext context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ShowTips, "打开神器界面");
+        }
+        private void OnClickContractBtn(EventContext context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ShowTips, "打开锲约界面");
+        }
+        private void OnClickJewelryBtn(EventContext context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ShowTips, "打开饰品装扮界面");
+        }
+        private void OnClickNotOpenBtn1(EventContext context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ShowTips, StringDefine.notOpen);
+        }
+        private void OnClickNotOpenBtn2(EventContext context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ShowTips, StringDefine.notOpen);
+        }
+
+        #endregion
+
+        private void Init()
+        {
+            if (_equipItemList == null)
+            {
+                _equipItemList = new List<CommonItemBaseView>()
+                {
+                    VM.Weapon,VM.Helmet,VM.Clothes,VM.Hand,VM.Pants,VM.Boots
+                };
+            }
+            if (_attributeDescMap == null)
+            {
+                _attributeDescMap = new Dictionary<EAttributeType, string>()
+                {
+                    {EAttributeType.Atk, GetAttributeDesc(EAttributeType.Atk)},
+                    {EAttributeType.Hp, GetAttributeDesc(EAttributeType.Hp)},
+                    {EAttributeType.Def, GetAttributeDesc(EAttributeType.Def)},
+                    { EAttributeType.AtkSpeed, GetAttributeDesc(EAttributeType.AtkSpeed)}
+                };
+            }
+        }
+
+        private void ShowUI()
+        {
+            ShowEquipUI();
+            ShowTitleIcon(PlayerData.Instance.Title);
+            ShowAttributeUI();
+            ShowContractSkills(201711);
+            LoadPlayerSpine("info_job_1001_1_SkeletonData");
+        }
+
+        /// <summary>
+        /// 加载主角的spine
+        /// </summary>
+        /// <param name="spineName"></param>
+        private void LoadPlayerSpine(string spineName)
+        {
+            VM.PlayerSpine.LoadSpine(spineName, "stand", true);
+        }
+
+        /// <summary>
+        /// 角色称号
+        /// </summary>
+        /// <param name="title"></param>
+        private void ShowTitleIcon(string title)
+        {
+            VM.TitleIcon.url = title;
+        }
+
+        /// <summary>
+        /// 锲约的技能
+        /// </summary>
+        /// <param name="skillName"></param>
+        private void ShowContractSkills(int skillId)
+        {
+            var skillInfo = SkillTableRepo.Get(skillId);
+            if (skillInfo == null) return;
+
+            VM.SkillNameLabl.text = skillInfo.Name;
+            VM.SkillDescLabl.text = skillInfo.Desc;
+            (VM.SkillBtn.GetChild("QualityIcon") as GLoader).url = AddressableDefine.ItemFrame((EQualityLevel)skillInfo.Quality);
+            VM.SkillBtn.icon = $"skillicon_{skillInfo.Icon}";
+        }
+
+        #region 装备UI
+        /// <summary>
+        /// 显示装备UI
+        /// </summary>
+        private void ShowEquipUI()
+        {
+            UiParam _uiParam = new UiParam();
+            _uiParam.bShowBtn = true;
+            _uiParam.bShowLevel = true;
+            int index = 1;
+            _equipItemList.ForEach((item) =>
+            {
+                EquipItem equipData = ItemData.Instance.GetEquipData((EEquipType)index);
+                if (equipData != null)
+                {
+                    item.Ctrl.ShowUI(ItemData.Instance.GetEquipData((EEquipType)index), _uiParam);
+                }
+                index++;
+            });
+        }
+
+        /// <summary>
+        /// 更换装备
+        /// </summary>
+        /// <param name="type"></param>
+        /// <param name="id"></param>
+        private void OnChangeEquip(int eventId, object args)
+        {
+            if (args == null)
+            {
+                return;
+            }
+            ChangeEquipParam param = (ChangeEquipParam)args;
+            CommonItemBaseView equipItem = _equipItemList[(int)param.equipType - 1];
+            if (equipItem != null)
+            {
+                UiParam _uiParam = new UiParam();
+                _uiParam.bShowBtn = true;
+                _uiParam.bShowLevel = true;
+                equipItem.Ctrl.ShowUI(ItemData.Instance.GetEquipData(param.equipType), _uiParam);
+            }
+        }
+        #endregion
+
+        #region 角色属性信息
+        private void ShowAttributeUI()
+        {
+            VM.NameLabel.text = PlayerData.Instance.Name;
+            ShowPlayerLevel();
+            ShowExp(false);
+            ShowAtrributeVal(VM.AtkLabel, EAttributeType.Atk);
+            ShowAtrributeVal(VM.HpLabel, EAttributeType.Hp);
+            ShowAtrributeVal(VM.DefLabel, EAttributeType.Def);
+            ShowAtrributeVal(VM.AtkSpeedLabel, EAttributeType.AtkSpeed);
+        }
+        private void ShowPlayerLevel()
+        {
+            VM.LvLabl.text = $"LV.{PlayerData.Instance.Level}";
+        }
+
+        private void ShowExp(bool bShowAni = true)
+        {
+            var expInfo = LevelTableRepo.Get(PlayerData.Instance.Level+1);
+            if (expInfo == null)
+            {
+                // 等级上限
+                expInfo = LevelTableRepo.Get(PlayerData.Instance.Level);
+            }
+            VM.ExpBar.max = expInfo.Exp;
+            if (bShowAni)
+                VM.ExpBar.TweenValue(PlayerData.Instance.Exp, 0.5f);
+            else
+                VM.ExpBar.value = PlayerData.Instance.Exp;
+        }
+
+        /// <summary>
+        /// 角色经验值增加
+        /// </summary>
+        /// <param name="eventId"></param>
+        /// <param name="args"></param>
+        private void AddPlayerExp(int eventId, object args)
+        {
+            ShowExp();
+        }
+
+        private string GetAttributeDesc(EAttributeType attrType)
+        {
+            var attrInfo = AttrDescTableRepo.Get((int)attrType);
+            return attrInfo?.ShowName ?? string.Empty;
+        }
+
+        /// <summary>
+        /// 角色属性变化
+        /// </summary>
+        /// <param name="eventId"></param>
+        /// <param name="args"></param>
+        private void OnChangeAttribute(int eventId, object args)
+        {
+            EAttributeType attrType = (EAttributeType)args;
+            if (attrType == EAttributeType.Atk)
+            {
+                ShowAtrributeVal(VM.AtkLabel, EAttributeType.Atk);
+            }
+            else if (attrType == EAttributeType.Hp)
+            {
+                ShowAtrributeVal(VM.HpLabel, EAttributeType.Hp);
+            }
+            else if (attrType == EAttributeType.Def)
+            {
+                ShowAtrributeVal(VM.DefLabel, EAttributeType.Def);
+            }
+            else if (attrType == EAttributeType.AtkSpeed)
+            {
+                ShowAtrributeVal(VM.AtkSpeedLabel, EAttributeType.AtkSpeed);
+            }
+        }
+        private void ShowAtrributeVal(GTextField attrLabel, EAttributeType attrType)
+        {
+            attrLabel.text = $"{_attributeDescMap[attrType]}:{PlayerData.Instance.Attr.GetValue(attrType)}";
+        }
+
+        #endregion
+    }
+}

+ 11 - 0
Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelCtrl.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: CnJM4XisUn8p9eIquPMCW6rj0M8ZFz3GT2Bj1x83NJ/SbTgOvnEwYEs=
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 83 - 0
Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelVM.Gen.cs

@@ -0,0 +1,83 @@
+/// #pkgName FGUI包名
+/// #panelName UIPanel名字
+/// #UIName = $"{#pkgName}{#panelName}" UIKey名字
+/// #PropertyDefineArea 属性定义区域
+/// #PropertyAssignArea 属性赋值区域
+/// #ComponentType 组件类型
+/// #PropertyName 属性名字
+/// 该脚本由模板创建,不可编辑
+/// created by cb 2024
+using FairyGUI;
+using XGame.Framework.FGUI;
+using XGame.Framework.UI;
+
+namespace FL.FGUI
+{
+    /// <summary>
+    /// 该脚本由模板创建,不可修改,不可编辑
+    /// </summary>
+    public partial class PlayerMainPanelVM : FguiViewModel
+    {
+        public CommonItemBaseView Weapon { get; private set; }
+        public CommonItemBaseView Clothes { get; private set; }
+        public CommonItemBaseView Helmet { get; private set; }
+        public CommonItemBaseView Hand { get; private set; }
+        public CommonItemBaseView Boots { get; private set; }
+        public CommonItemBaseView Pants { get; private set; }
+        public GLoader TitleIcon { get; private set; }
+        public GLoader3D PlayerSpine { get; private set; }
+        public GProgressBar ExpBar { get; private set; }
+        public GTextField NameLabel { get; private set; }
+        public GTextField LvLabl { get; private set; }
+        public GGroup TopUI { get; private set; }
+        public GTextField HpLabel { get; private set; }
+        public GTextField AtkLabel { get; private set; }
+        public GTextField DefLabel { get; private set; }
+        public GTextField AtkSpeedLabel { get; private set; }
+        public GButton AttrInfoBtn { get; private set; }
+        public GTextField SkillNameLabl { get; private set; }
+        public GTextField SkillDescLabl { get; private set; }
+        public GButton SkillBtn { get; private set; }
+        public GButton ChangeBtn { get; private set; }
+        public GButton MountBtn { get; private set; }
+        public GButton ArtifactBtn { get; private set; }
+        public GButton ContractBtn { get; private set; }
+        public GButton JewelryBtn { get; private set; }
+        public GButton NotOpenBtn1 { get; private set; }
+        public GButton NotOpenBtn2 { get; private set; }
+        public GGroup BottomUI { get; private set; }
+
+        protected override void BindComponents(GComponent panel, IUIViewAdapter adapter)
+        {
+            Weapon = adapter.CreateNested<CommonItemBaseView>(new FguiNested(panel.GetChild("Weapon").asCom), true);
+            Clothes = adapter.CreateNested<CommonItemBaseView>(new FguiNested(panel.GetChild("Clothes").asCom), true);
+            Helmet = adapter.CreateNested<CommonItemBaseView>(new FguiNested(panel.GetChild("Helmet").asCom), true);
+            Hand = adapter.CreateNested<CommonItemBaseView>(new FguiNested(panel.GetChild("Hand").asCom), true);
+            Boots = adapter.CreateNested<CommonItemBaseView>(new FguiNested(panel.GetChild("Boots").asCom), true);
+            Pants = adapter.CreateNested<CommonItemBaseView>(new FguiNested(panel.GetChild("Pants").asCom), true);
+            TitleIcon = panel.GetChild("TitleIcon") as GLoader;
+            PlayerSpine = panel.GetChild("PlayerSpine") as GLoader3D;
+            ExpBar = panel.GetChild("ExpBar") as GProgressBar;
+            NameLabel = panel.GetChild("NameLabel") as GTextField;
+            LvLabl = panel.GetChild("LvLabl") as GTextField;
+            TopUI = panel.GetChild("topUI") as GGroup;
+            HpLabel = panel.GetChild("HpLabel") as GTextField;
+            AtkLabel = panel.GetChild("AtkLabel") as GTextField;
+            DefLabel = panel.GetChild("DefLabel") as GTextField;
+            AtkSpeedLabel = panel.GetChild("AtkSpeedLabel") as GTextField;
+            AttrInfoBtn = panel.GetChild("AttrInfoBtn") as GButton;
+            SkillNameLabl = panel.GetChild("SkillNameLabl") as GTextField;
+            SkillDescLabl = panel.GetChild("SkillDescLabl") as GTextField;
+            SkillBtn = panel.GetChild("SkillBtn") as GButton;
+            ChangeBtn = panel.GetChild("ChangeBtn") as GButton;
+            MountBtn = panel.GetChild("MountBtn") as GButton;
+            ArtifactBtn = panel.GetChild("ArtifactBtn") as GButton;
+            ContractBtn = panel.GetChild("ContractBtn") as GButton;
+            JewelryBtn = panel.GetChild("JewelryBtn") as GButton;
+            NotOpenBtn1 = panel.GetChild("NotOpenBtn1") as GButton;
+            NotOpenBtn2 = panel.GetChild("NotOpenBtn2") as GButton;
+            BottomUI = panel.GetChild("bottomUI") as GGroup;
+
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelVM.Gen.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: Cn8ctCn7ASoNLw3HHIp4JsfOL88TKfrmqDn1AoxObGM8hQUXEzCU5pI=
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 34 - 0
Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelView.cs

@@ -0,0 +1,34 @@
+/// #pkgName FGUI包名
+/// #panelName UIPanel名字
+/// #UIName = $"{#pkgName}{#panelName}" UIKey名字
+/// 该脚本由模板创建
+/// created by cb 2024
+
+using XGame.Framework.UI;
+
+namespace FL.FGUI
+{
+    public static partial class UIKeys
+    {
+        private static UIKey _PlayerMainPanel;
+        public static UIKey PlayerMainPanel => _PlayerMainPanel ?? (_PlayerMainPanel = new UIKey("Player", "MainPanel", typeof(PlayerMainPanelView)));
+    }
+    public partial class PlayerMainPanelView : UIView
+    {
+        
+        protected override void AddController(IUIControllerGroup group)
+        {
+            group.Add(new PlayerMainPanelCtrl());
+        }
+
+        protected override IUIViewModel CreateViewModel()
+        {
+            return new PlayerMainPanelVM();
+        }
+
+        protected override void OnDispose()
+        {
+        }
+    }
+}
+

+ 11 - 0
Assets/Scripts/Business/Runtime/FGUI/Player/MainPanel/PlayerMainPanelView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: Dykcs3z5BynR0oBuJngTMZpP/nvWn/TYF1hau8Q03kbuXgSlt87Wu38=
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Scripts/Business/Runtime/Nodes/Player.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: WX1L5CuoU3uVvDQjKQhcF2HuvZFY8Rodt+JB1wcKcfYQs1YBs2zK1jI=
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 31 - 0
Assets/Scripts/Business/Runtime/Nodes/Player/PlayerNode.cs

@@ -0,0 +1,31 @@
+using FL.Nodes.Player;
+using XGame.Framework.Data;
+using XGame.Framework.Nodes;
+
+namespace FL.Nodes
+{
+    public static partial class NodeKeys
+    {
+        private static NodeKey _Player;
+        public static NodeKey Player => _Player ??= new NodeKey("Player", (uint)NodeGroupDefine.GameMain, typeof(PlayerNode));
+    }
+    public class PlayerNode : Node
+    {
+        protected override void OnDispose()
+        {
+        }
+
+        protected override void OnInited()
+        {
+        }
+
+        protected override void AddComponent(INodeComponentGroup group)
+        {
+            group.Add(new UIComponent());
+        }
+
+        protected override void AddData(IDataGroup dataGroup)
+        {
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/Business/Runtime/Nodes/Player/PlayerNode.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: CH0csC77Wioop7Pf8XdlSUQEU5nilEA84FC+Fxug68p2Aie2261DsBc=
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 14 - 0
Assets/Scripts/Business/Runtime/Nodes/Player/UIComponent.cs

@@ -0,0 +1,14 @@
+using XGame.Framework.Nodes;
+
+namespace FL.Nodes.Player
+{
+    public class UIComponent : NodeComponent
+    {
+        public override void OnEnable(object intent)
+        {
+        }
+        public override void OnDisable()
+        {
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/Business/Runtime/Nodes/Player/UIComponent.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: Biga536sUCjwLjuLdDmc0xVkQ33AbAs+l29foHA1jCjiSXyS1qX50K8=
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 6 - 4
fl-fgui-project/assets/Common/Components/UseBtn.xml

@@ -1,10 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<component size="271,89" pivot="0.5,0.5" extention="Button">
+<component size="271,89" pivot="0.5,0.5" anchor="true" extention="Button">
   <displayList>
-    <loader id="n0_qpp5" name="icon" xy="0,0" pivot="0.5,0.5" size="271,89" url="ui://gt6q23qwqpp51" align="center" vAlign="middle" autoSize="true"/>
-    <text id="n1_qpp5" name="title" xy="130,20" pivot="0.5,0.5" size="10,49" fontSize="36" color="#ffffff" align="center" vAlign="middle" leading="0" bold="true" singleLine="true" text="">
+    <loader id="n0_qpp5" name="icon" xy="135,44" pivot="0.5,0.5" anchor="true" size="271,89" url="ui://gt6q23qwqpp51" align="center" vAlign="middle" fill="scaleFree">
       <relation target="" sidePair="width-width,height-height"/>
+    </loader>
+    <text id="n1_qpp5" name="title" xy="135,44" pivot="0.5,0.5" anchor="true" size="10,49" fontSize="36" color="#ffffff" align="center" vAlign="middle" leading="0" singleLine="true" text="">
+      <relation target="" sidePair="center-center,middle-middle"/>
     </text>
   </displayList>
-  <Button downEffect="scale" downEffectValue=".95"/>
+  <Button downEffect="scale" downEffectValue=".9"/>
 </component>

+ 4 - 4
fl-fgui-project/assets/Common/ConfirmationBox.xml

@@ -10,16 +10,16 @@
     </image>
     <image id="n1_tlq5" name="n1" src="tlq52l" fileName="images/contentBg.png" xy="62,422" size="632,403" group="n10_tlq5"/>
     <image id="n3_tlq5" name="n3" src="tlq52j" fileName="images/imgToggleBg.png" xy="85,473" size="585,180" group="n10_tlq5"/>
-    <component id="n4_tlq5" name="CancelBtn" src="tlq52i" fileName="Components/UseBtn.xml" xy="101,723" group="n10_tlq5">
+    <component id="n4_tlq5" name="CancelBtn" src="tlq52i" fileName="Components/UseBtn.xml" xy="226,761" group="n10_tlq5">
       <Button title="取消" icon="ui://gt6q23qwapdee"/>
     </component>
-    <component id="n5_tlq5" name="SureBtn" src="tlq52i" fileName="Components/UseBtn.xml" xy="397,723" group="n10_tlq5">
+    <component id="n5_tlq5" name="SureBtn" src="tlq52i" fileName="Components/UseBtn.xml" xy="536,761" group="n10_tlq5">
       <Button title="确定"/>
     </component>
-    <component id="n6_tlq5" name="ToggleBtn" src="tlq52k" fileName="Components/toggleBtn.xml" xy="216,659" group="n10_tlq5"/>
+    <component id="n6_tlq5" name="ToggleBtn" src="tlq52k" fileName="Components/toggleBtn.xml" xy="277,660" group="n10_tlq5"/>
     <text id="n7_tlq5" name="n7" xy="343,404" pivot="0.5,0.5" size="70,44" group="n10_tlq5" fontSize="32" color="#ffffff" align="center" vAlign="middle" leading="0" bold="true" text="提示"/>
     <text id="n8_tlq5" name="CntLabel" xy="133,538" pivot="0.5,0.5" size="490,36" group="n10_tlq5" fontSize="26" align="center" vAlign="middle" leading="0" bold="true" text="提示提示提示提示提示提示提示提示提示"/>
-    <text id="n9_tlq5" name="n9" xy="284,674" pivot="0,0.5" size="188,32" group="n10_tlq5" fontSize="22" color="#9f90a9" vAlign="middle" leading="0" bold="true" strokeColor="#ffffff" text="此次登录不再提醒"/>
+    <text id="n9_tlq5" name="n9" xy="343,674" pivot="0,0.5" size="188,32" group="n10_tlq5" fontSize="22" color="#9f90a9" vAlign="middle" leading="0" bold="true" strokeColor="#ffffff" text="此次登录不再提醒"/>
     <group id="n10_tlq5" name="n10" xy="62,404" size="632,421" advanced="true">
       <relation target="" sidePair="center-center,middle-middle"/>
     </group>

+ 10 - 11
fl-fgui-project/assets/DragonEgg/Box.xml

@@ -3,10 +3,9 @@
   <controller name="MenusBtnCtrl" pages="0,,1,,2,,3,,4," selected="0"/>
   <controller name="AwardState" pages="0,,1," selected="0"/>
   <displayList>
-    <component id="n46_5s12" name="BackGround" src="c95i2g" fileName="BackGroundNested.xml" pkg="gt6q23qw" xy="0,0" touchable="false">
+    <image id="n0_sbyi" name="n0" src="sbyi2x" fileName="images/imgTop.png" xy="0,0" size="756,1176">
       <relation target="" sidePair="width-width,height-height"/>
-    </component>
-    <image id="n0_sbyi" name="n0" src="sbyi2x" fileName="images/imgTop.png" xy="4,-1" size="750,404" group="n50_l2th"/>
+    </image>
     <image id="n13_ely2" name="n13" src="qwg436" fileName="images/imgEgg.png" xy="2,101" size="140,130" group="n50_l2th"/>
     <component id="n7_k0hr" name="EquipUI" src="k0hr2z" fileName="EquipmentUI.xml" xy="0,254" size="756,136" group="n50_l2th"/>
     <component id="n14_ely2" name="EggPointBar" src="717y1w" fileName="Components/EggBar.xml" xy="143,136" size="456,60" group="n50_l2th">
@@ -29,30 +28,30 @@
     <component id="n30_kvo6" name="BagBtn" src="qwg431" fileName="Components/BagBtn.xml" xy="705,448" size="62,55" group="n50_l2th"/>
     <component id="n11_k0hr" name="DragonSpineBtn" src="negq2e" fileName="Components/EmptyBtn.xml" pkg="gt6q23qw" xy="239,697" pivot="0.5,0.5" size="277,218" group="n50_l2th"/>
     <text id="n6_k0hr" name="n6" xy="333,-2" pivot="0.5,0.5" size="88,39" group="n50_l2th" fontSize="28" color="#ffffff" align="center" vAlign="middle" leading="0" strokeColor="#000000" text="装备栏"/>
-    <text id="n5_k0hr" name="DragonLabel" xy="329,492" size="94,42" group="n50_l2th" fontSize="30" color="#ffffff" align="center" vAlign="middle" leading="0" text="钻石龙"/>
+    <text id="n5_k0hr" name="DragonLabel" xy="329,492" pivot="0.5,0.5" size="94,42" group="n50_l2th" fontSize="30" align="center" vAlign="middle" leading="0" text="钻石龙"/>
     <text id="n42_tar7" name="AttackLabel" xy="120,50" size="101,34" group="n50_l2th" fontSize="24" color="#00ff33" leading="0" singleLine="true" text="攻击:200"/>
     <text id="n43_tar7" name="HpLabel" xy="327,50" size="101,34" group="n50_l2th" fontSize="24" color="#00ff33" leading="0" singleLine="true" text="生命:200"/>
     <text id="n44_tar7" name="DefenseLabel" xy="534,50" size="101,34" group="n50_l2th" fontSize="24" color="#00ff33" leading="0" singleLine="true" text="生命:200"/>
     <group id="n50_l2th" name="n50" xy="0,-2" size="756,1026" advanced="true">
       <relation target="" sidePair="top-top"/>
     </group>
-    <image id="n34_qwg4" name="n34" src="717y1s" fileName="images/bgBlack.png" xy="3,1088" size="750,100" group="n49_l2th"/>
-    <component id="n35_cabz" name="DragonBtn1" src="cabz3d" fileName="Components/DragonBtn.xml" xy="21,1088" size="100,100" group="n49_l2th">
+    <image id="n34_qwg4" name="n34" src="717y1s" fileName="images/bgBlack.png" xy="3,1072" size="750,100" group="n49_l2th"/>
+    <component id="n35_cabz" name="DragonBtn1" src="cabz3d" fileName="Components/DragonBtn.xml" xy="21,1072" size="100,100" group="n49_l2th">
       <Button checked="true" icon="ui://d1tqluu1cabz3b" controller="MenusBtnCtrl" page="0"/>
     </component>
-    <component id="n36_cabz" name="DragonBtn2" src="cabz3d" fileName="Components/DragonBtn.xml" xy="176,1088" size="100,100" group="n49_l2th">
+    <component id="n36_cabz" name="DragonBtn2" src="cabz3d" fileName="Components/DragonBtn.xml" xy="176,1072" size="100,100" group="n49_l2th">
       <Button icon="ui://d1tqluu1cabz3c" controller="MenusBtnCtrl" page="1"/>
     </component>
-    <component id="n37_cabz" name="DragonBtn3" src="cabz3d" fileName="Components/DragonBtn.xml" xy="331,1088" size="100,100" group="n49_l2th">
+    <component id="n37_cabz" name="DragonBtn3" src="cabz3d" fileName="Components/DragonBtn.xml" xy="331,1072" size="100,100" group="n49_l2th">
       <Button icon="ui://d1tqluu1cabz37" controller="MenusBtnCtrl" page="2"/>
     </component>
-    <component id="n38_cabz" name="DragonBtn4" src="cabz3d" fileName="Components/DragonBtn.xml" xy="486,1088" size="100,100" group="n49_l2th">
+    <component id="n38_cabz" name="DragonBtn4" src="cabz3d" fileName="Components/DragonBtn.xml" xy="486,1072" size="100,100" group="n49_l2th">
       <Button icon="ui://d1tqluu1cabz38" controller="MenusBtnCtrl" page="3"/>
     </component>
-    <component id="n39_cabz" name="DragonBtn5" src="cabz3d" fileName="Components/DragonBtn.xml" xy="641,1088" size="100,100" group="n49_l2th">
+    <component id="n39_cabz" name="DragonBtn5" src="cabz3d" fileName="Components/DragonBtn.xml" xy="641,1072" size="100,100" group="n49_l2th">
       <Button icon="ui://d1tqluu1cabz39" controller="MenusBtnCtrl" page="4"/>
     </component>
-    <group id="n49_l2th" name="n49" xy="3,1088" size="750,100" advanced="true">
+    <group id="n49_l2th" name="n49" xy="3,1072" size="750,100" advanced="true">
       <relation target="" sidePair="bottom-bottom"/>
     </group>
   </displayList>

+ 15 - 0
fl-fgui-project/assets/Player/Components/ExpBar.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="50,21" extention="ProgressBar">
+  <displayList>
+    <image id="n0_j5xq" name="n0" src="j5xq3" fileName="Images/imgExpBg.png" xy="0,0" size="50,21">
+      <relation target="" sidePair="width-width,height-height"/>
+    </image>
+    <image id="n1_j5xq" name="bar" src="j5xq2" fileName="Images/imgExp.png" xy="0,2" size="50,17">
+      <relation target="" sidePair="width-width,height-height"/>
+    </image>
+    <text id="n2_j5xq" name="title" xy="25,11" pivot="0.5,0.5" anchor="true" size="50,29" fontSize="20" color="#ffffff" align="center" vAlign="middle" leading="0" autoSize="none" singleLine="true" text="1">
+      <relation target="" sidePair="width-width,height-height"/>
+    </text>
+  </displayList>
+  <ProgressBar titleType="valueAndmax"/>
+</component>

+ 16 - 0
fl-fgui-project/assets/Player/Components/IconBtn.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="100,100" pivot="0.5,0.5" extention="Button">
+  <displayList>
+    <loader id="n0_j5xq" name="bg" xy="0,0" size="100,100" touchable="false" url="ui://gt6q23qwqpp53" align="center" vAlign="middle" fill="scaleFree">
+      <relation target="" sidePair="width-width,height-height"/>
+    </loader>
+    <loader id="n1_j5xq" name="icon" xy="0,0" pivot="0.5,0.5" size="100,100" touchable="false" align="center" vAlign="middle" fill="scaleFree">
+      <relation target="" sidePair="width-width,height-height"/>
+    </loader>
+    <text id="n3_j5xq" name="title" xy="45,102" pivot="0.5,0.5" size="10,32" fontSize="22" align="center" vAlign="middle" leading="0" singleLine="true" text="">
+      <relation target="" sidePair="width-width,height-height"/>
+    </text>
+  </displayList>
+  <Button downEffect="scale" downEffectValue=".9"/>
+  <customProperty target="bg" propertyId="1"/>
+</component>

+ 12 - 0
fl-fgui-project/assets/Player/Components/InfoBtn.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="200,50" pivot="0.5,0.5" extention="Button">
+  <controller name="button" pages="0,up,1,down,2,over,3,selectedOver" selected="0"/>
+  <displayList>
+    <text id="n3_j5xq" name="title" xy="19,3" pivot="0.5,0.5" size="124,42" fontSize="30" color="#00ff00" align="center" vAlign="middle" leading="0" underline="true" singleLine="true" text="属性详情">
+      <relation target="" sidePair="width-width,height-height"/>
+    </text>
+    <image id="n4_j5xq" name="n4" src="j5xq6" fileName="Images/imgArrow.png" xy="154,13"/>
+    <image id="n5_j5xq" name="n5" src="j5xq6" fileName="Images/imgArrow.png" xy="168,13"/>
+  </displayList>
+  <Button downEffect="scale" downEffectValue=".9"/>
+</component>

+ 17 - 0
fl-fgui-project/assets/Player/Components/NotOpenBtn.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="100,100" pivot="0.5,0.5" extention="Button">
+  <displayList>
+    <loader id="n0_j5xq" name="bg" xy="0,0" size="100,100" touchable="false" url="ui://gt6q23qwqpp53" align="center" vAlign="middle" fill="scaleFree">
+      <relation target="" sidePair="width-width,height-height"/>
+    </loader>
+    <loader id="n1_j5xq" name="icon" xy="0,0" pivot="0.5,0.5" size="100,100" touchable="false" url="ui://gt6q23qwme3q2b" align="center" vAlign="middle" fill="scaleFree">
+      <relation target="" sidePair="width-width,height-height"/>
+    </loader>
+    <text id="n3_j5xq" name="title" xy="15,102" pivot="0.5,0.5" size="70,32" fontSize="22" align="center" vAlign="middle" leading="0" singleLine="true" text="未开放">
+      <relation target="" sidePair="width-width,height-height"/>
+    </text>
+    <image id="n4_d813" name="n4" src="j5xqa" fileName="Images/imgLock.png" xy="12,12"/>
+  </displayList>
+  <Button downEffect="scale" downEffectValue=".9"/>
+  <customProperty target="bg" propertyId="1"/>
+</component>

+ 13 - 0
fl-fgui-project/assets/Player/Components/SkillBtn.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="128,128" pivot="0.5,0.5" extention="Button">
+  <displayList>
+    <loader id="n0_j5xq" name="QualityIcon" xy="0,0" size="128,128" touchable="false">
+      <relation target="" sidePair="width-width,height-height"/>
+    </loader>
+    <loader id="n1_j5xq" name="icon" xy="64,64" pivot="0.5,0.5" anchor="true" size="100,105" touchable="false" align="center" vAlign="middle" autoSize="true" clearOnPublish="true">
+      <relation target="" sidePair="width-width,height-height"/>
+    </loader>
+  </displayList>
+  <Button downEffect="scale" downEffectValue=".9"/>
+  <customProperty target="QualityIcon" propertyId="1"/>
+</component>

BIN=BIN
fl-fgui-project/assets/Player/Images/imgArrow.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgArtifact.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgBlue.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgContract.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgExp.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgExpBg.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgJewelry.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgLock.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgMount.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgPurple.png


BIN=BIN
fl-fgui-project/assets/Player/Images/imgTop.png


+ 69 - 0
fl-fgui-project/assets/Player/MainPanel.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component size="756,1344">
+  <displayList>
+    <image id="n8_j5xq" name="n8" src="j5xq1" fileName="Images/imgTop.png" xy="0,0" size="756,1172">
+      <relation target="" sidePair="width-width,height-height"/>
+    </image>
+    <component id="n1_j5xq" name="Weapon" src="me3q0" fileName="ItemBase.xml" pkg="gt6q23qw" xy="24,90" pivot="0.5,0.5" size="128,128" group="n53_j5xq" aspect="true" scale="0.85,0.85"/>
+    <component id="n2_j5xq" name="Clothes" src="me3q0" fileName="ItemBase.xml" pkg="gt6q23qw" xy="24,234" pivot="0.5,0.5" size="128,128" group="n53_j5xq" aspect="true" scale="0.85,0.85"/>
+    <component id="n3_j5xq" name="Helmet" src="me3q0" fileName="ItemBase.xml" pkg="gt6q23qw" xy="24,378" pivot="0.5,0.5" size="128,128" group="n53_j5xq" aspect="true" scale="0.85,0.85"/>
+    <component id="n4_j5xq" name="Hand" src="me3q0" fileName="ItemBase.xml" pkg="gt6q23qw" xy="604,90" pivot="0.5,0.5" size="128,128" group="n53_j5xq" aspect="true" scale="0.85,0.85"/>
+    <component id="n5_j5xq" name="Boots" src="me3q0" fileName="ItemBase.xml" pkg="gt6q23qw" xy="604,234" pivot="0.5,0.5" size="128,128" group="n53_j5xq" aspect="true" scale="0.85,0.85"/>
+    <component id="n6_j5xq" name="Pants" src="me3q0" fileName="ItemBase.xml" pkg="gt6q23qw" xy="604,378" pivot="0.5,0.5" size="128,128" group="n53_j5xq" aspect="true" scale="0.85,0.85"/>
+    <loader id="n7_j5xq" name="TitleIcon" xy="314,28" pivot="0.5,0.5" size="128,128" group="n53_j5xq" scale="0.5,0.5" align="center" vAlign="middle" autoSize="true"/>
+    <loader3D id="n9_j5xq" name="PlayerSpine" xy="267,100" size="222,343" group="n53_j5xq" animation="" skin="" loop="true"/>
+    <component id="n11_j5xq" name="ExpBar" src="j5xq4" fileName="Components/ExpBar.xml" xy="292,553" size="236,30" group="n53_j5xq">
+      <ProgressBar value="100" max="10000"/>
+    </component>
+    <text id="n10_j5xq" name="NameLabel" xy="268,496" pivot="0.5,0.5" size="220,49" group="n53_j5xq" fontSize="36" align="center" vAlign="middle" leading="0" singleLine="true" text="主角名字六字"/>
+    <text id="n12_j5xq" name="LvLabl" xy="229,552" pivot="1,0.5" size="62,32" group="n53_j5xq" fontSize="22" align="right" vAlign="middle" leading="0" singleLine="true" text="LV.30"/>
+    <group id="n53_j5xq" name="topUI" xy="24,28" size="708,556" advanced="true"/>
+    <image id="n16_j5xq" name="n16" src="j5xq3" fileName="Images/imgExpBg.png" xy="0,603" pivot="0.5,0.5" size="756,180" group="n26_j5xq"/>
+    <text id="n17_j5xq" name="n17" xy="316,606" pivot="0.5,0.5" size="124,42" group="n26_j5xq" fontSize="30" color="#ffffff" align="center" vAlign="middle" leading="0" text="角色属性"/>
+    <text id="n18_j5xq" name="HpLabel" xy="68,651" size="230,42" group="n26_j5xq" fontSize="30" vAlign="middle" leading="0" text="生命:12345678"/>
+    <text id="n20_j5xq" name="AtkLabel" xy="479,650" size="230,42" group="n26_j5xq" fontSize="30" vAlign="middle" leading="0" text="攻击:12345678"/>
+    <text id="n21_j5xq" name="DefLabel" xy="68,708" size="230,42" group="n26_j5xq" fontSize="30" vAlign="middle" leading="0" text="防御:12345678"/>
+    <text id="n22_j5xq" name="AtkSpeedLabel" xy="479,708" size="196,42" group="n26_j5xq" fontSize="30" vAlign="middle" leading="0" text="速度:123456"/>
+    <component id="n25_j5xq" name="AttrInfoBtn" src="j5xq5" fileName="Components/InfoBtn.xml" xy="288,736" group="n26_j5xq"/>
+    <group id="n26_j5xq" name="n26" xy="0,603" size="756,183" advanced="true">
+      <relation target="" sidePair="top-top"/>
+    </group>
+    <image id="n27_j5xq" name="n27" src="j5xq3" fileName="Images/imgExpBg.png" xy="0,801" pivot="0.5,0.5" size="756,156" group="n41_j5xq"/>
+    <text id="n28_j5xq" name="n28" xy="346,792" pivot="0.5,0.5" size="64,42" group="n41_j5xq" fontSize="30" color="#ffffff" align="center" vAlign="middle" leading="0" text="契约"/>
+    <text id="n29_j5xq" name="SkillNameLabl" xy="147,808" size="124,42" group="n41_j5xq" fontSize="30" vAlign="middle" leading="0" text="技能名称"/>
+    <text id="n30_j5xq" name="SkillDescLabl" xy="150,855" size="406,92" group="n41_j5xq" fontSize="26" color="#ffffff" leading="0" autoSize="none" text="攻击:12345678"/>
+    <component id="n37_j5xq" name="SkillBtn" src="j5xq8" fileName="Components/SkillBtn.xml" xy="8,815" group="n41_j5xq">
+      <Button icon="ui://7pswoevwj5xqe"/>
+      <property target="QualityIcon" propertyId="1" value="ui://7pswoevwj5xqh"/>
+    </component>
+    <component id="n39_j5xq" name="ChangeBtn" src="tlq52i" fileName="Components/UseBtn.xml" pkg="gt6q23qw" xy="661,902" size="176,58" group="n41_j5xq" aspect="true">
+      <Button title="更换" titleColor="#000000" icon="ui://gt6q23qwapdee"/>
+    </component>
+    <group id="n41_j5xq" name="n41" xy="0,792" size="756,165" advanced="true">
+      <relation target="" sidePair="top-top"/>
+    </group>
+    <text id="n49_j5xq" name="n49" xy="316,977" pivot="0.5,0.5" size="124,42" group="n61_j5xq" fontSize="30" align="center" vAlign="middle" leading="0" text="远古神力"/>
+    <component id="n54_j5xq" name="MountBtn" src="j5xq9" fileName="Components/IconBtn.xml" xy="8,1037" group="n61_j5xq">
+      <Button title="坐骑" icon="ui://7pswoevwj5xqc"/>
+      <property target="bg" propertyId="1" value="ui://7pswoevwj5xqh"/>
+    </component>
+    <component id="n56_j5xq" name="ArtifactBtn" src="j5xq9" fileName="Components/IconBtn.xml" xy="134,1037" group="n61_j5xq">
+      <Button title="神器" icon="ui://7pswoevwj5xqd"/>
+      <property target="bg" propertyId="1" value="ui://7pswoevwj5xqi"/>
+    </component>
+    <component id="n57_j5xq" name="ContractBtn" src="j5xq9" fileName="Components/IconBtn.xml" xy="260,1037" group="n61_j5xq">
+      <Button title="锲约" icon="ui://7pswoevwj5xqe"/>
+      <property target="bg" propertyId="1" value="ui://7pswoevwj5xqh"/>
+    </component>
+    <component id="n58_j5xq" name="JewelryBtn" src="j5xq9" fileName="Components/IconBtn.xml" xy="386,1037" group="n61_j5xq">
+      <Button title="背饰" icon="ui://7pswoevwj5xqb"/>
+      <property target="bg" propertyId="1" value="ui://7pswoevwj5xqi"/>
+    </component>
+    <component id="n59_j5xq" name="NotOpenBtn1" src="d813j" fileName="Components/NotOpenBtn.xml" xy="512,1037" group="n61_j5xq"/>
+    <component id="n60_j5xq" name="NotOpenBtn2" src="d813j" fileName="Components/NotOpenBtn.xml" xy="638,1037" group="n61_j5xq"/>
+    <group id="n61_j5xq" name="bottomUI" xy="8,977" size="730,160" advanced="true">
+      <relation target="" sidePair="bottom-bottom"/>
+    </group>
+  </displayList>
+  <scriptData gencodej5xq0="1"/>
+</component>

+ 23 - 0
fl-fgui-project/assets/Player/package.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packageDescription id="7pswoevw">
+  <resources>
+    <component id="j5xq0" name="MainPanel.xml" path="/" exported="true"/>
+    <image id="j5xq1" name="imgTop.png" path="/Images/" scale="9grid" scale9grid="187,82,365,15"/>
+    <image id="j5xq2" name="imgExp.png" path="/Images/" scale="9grid" scale9grid="10,10,6,-3"/>
+    <image id="j5xq3" name="imgExpBg.png" path="/Images/" scale="9grid" scale9grid="10,10,8,1"/>
+    <component id="j5xq4" name="ExpBar.xml" path="/Components/"/>
+    <component id="j5xq5" name="InfoBtn.xml" path="/Components/"/>
+    <image id="j5xq6" name="imgArrow.png" path="/Images/"/>
+    <component id="j5xq8" name="SkillBtn.xml" path="/Components/"/>
+    <component id="j5xq9" name="IconBtn.xml" path="/Components/"/>
+    <image id="j5xqa" name="imgLock.png" path="/Images/"/>
+    <image id="j5xqb" name="imgJewelry.png" path="/Images/"/>
+    <image id="j5xqc" name="imgMount.png" path="/Images/"/>
+    <image id="j5xqd" name="imgArtifact.png" path="/Images/"/>
+    <image id="j5xqe" name="imgContract.png" path="/Images/"/>
+    <image id="j5xqh" name="imgBlue.png" path="/Images/"/>
+    <image id="j5xqi" name="imgPurple.png" path="/Images/"/>
+    <component id="d813j" name="NotOpenBtn.xml" path="/Components/"/>
+  </resources>
+  <publish name="" genCode="true"/>
+</packageDescription>