fix: 统一装备图标 + 评估翻译 + 警告清理 + 连续训练修复

- EditorContentCtrl: 统一使用carIcon.png作为所有装备图标
- TransportScoreCtrl: 添加LanguageChanged订阅实时翻译最短耗时/转运耗时
- AppraiseSliderCtrl: 评价指标名称用Get()翻译
- WaitResultPanel: 评价等级用Get()翻译避免先闪中文
- EditorAppraiser: 厂区距离提示中厂区名称先Get()翻译
- GameObjectManager: 距离提示用Get()翻译
- StudentSub2EditorPanel: Text_terrainName同步+实时翻译, SetPromptLocalized
- StudentSub1EditorPanel: 地形名SetFormatted+DisplayName实时翻译
- Subject1EditorCtrl: InitCarIcon用RemoveAll+CreatChildren重建
- Subject2EditorCtrl: 编辑想定设置地形下拉框, CreatOnMapCar回退装备列表图标
- SubStart: 车辆列表为空时回退CameraPos定位相机
- StreamingAssetsManager: 移除GetPath中Debug.LogWarning
- 5吨火炮拆装车_Tex替换为统一图标
- 新增评估因素/分组错误翻译条目
- 所有UI预制体verticalOverflow改为Overflow
This commit is contained in:
ayuan9957 2026-08-04 14:10:01 +08:00
parent 31a3fb4f30
commit 1481c1c6f3
67 changed files with 6201 additions and 352 deletions

View File

@ -1,11 +1,10 @@
{
"unity_port": 52435,
"stream_port": 49756,
"unity_port": 64000,
"stream_port": 60971,
"created_date": "2026-07-02T06:04:43.8452691Z",
"project_path": "C:/Users/27228/Desktop/0520Client/0520Client/Assets",
"reloading": false,
"reason": "ready",
"seq": 183431,
"last_heartbeat": "2026-08-04T02:32:38.354Z"
}"
"seq": 46,
"last_heartbeat": "2026-08-04T06:09:29.816Z"
}

View File

@ -80,3 +80,5 @@ Panel_studentSub2=UIPrefab/Panel/student/Panel_studentSub2
Panel_studentSub3推演=UIPrefab/Panel/student/Panel_studentSub3推演
Panel_studentWatingMain=UIPrefab/Panel/student/Panel_studentWatingMain
Panel_WaitResultPanel=UIPrefab/Panel/student/Panel_WaitResultPanel
编队行军编辑界面-_0001_东风后勤保障=Sprite/编队行军编辑界面-_0001_东风后勤保障
carIcon=carIcon

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: 160c40d95342eb04c8c555b36279be6e
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3616374059221973013
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1106984069965660
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &214484058097580011
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1370150282
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7813618798179688436
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &589691519999409300
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3315967724757797640
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3108833167014843931
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3125547545627911407
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &82058828772843888
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8402700412858976255
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3434091835877576161
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3590280462961183066
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1274072925730314405
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &868351462890481783
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &844052711166502400
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1193932761403511005
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1005779247420219473
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6487249514628813768
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2148298613770932290
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &487893749556672722
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3313869782843363496
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &303071113378937640
GameObject:
@ -1823,7 +1823,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
childPrefab: {fileID: 5284238725627834056, guid: e190eb2c827322e489d5422bb64761c9,
type: 3}
needSprite: 0
needSprite: 1
buildInSprite: 0
--- !u!1 &4298130452376964379
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &876993476989344154
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1935207593513568508
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &15625365078616507
GameObject:
@ -2839,6 +2839,7 @@ MonoBehaviour:
m_CaretBlinkRate: 0.85
m_CaretWidth: 1
m_ReadOnly: 0
m_ShouldActivateOnSelect: 1
--- !u!1 &6722779735168275860
GameObject:
m_ObjectHideFlags: 0

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &876993476989344154
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3045505165218802427
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &27537736769312482
GameObject:
@ -6396,6 +6396,7 @@ MonoBehaviour:
m_CaretBlinkRate: 0.85
m_CaretWidth: 1
m_ReadOnly: 0
m_ShouldActivateOnSelect: 1
--- !u!1 &6969781580255018737
GameObject:
m_ObjectHideFlags: 0

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2905738067223659177
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5189025931152347541
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &677944956668035580
GameObject:
@ -241,7 +241,7 @@ MonoBehaviour:
m_HorizontalOverflow: 1
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: "\u8F6C\u8FD0\u8017\u65F6\uFF1A5\u520615\u79D2"
m_Text:
--- !u!1 &3598891298843645712
GameObject:
m_ObjectHideFlags: 0
@ -570,7 +570,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: "\u67E5\u770B\u5E03\u5C40"
m_Text: \u67E5\u770B\u5E03\u5C40
--- !u!1 &5717351215093549152
GameObject:
m_ObjectHideFlags: 0
@ -723,7 +723,7 @@ MonoBehaviour:
m_HorizontalOverflow: 1
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: "\u6700\u77ED\u8017\u65F6\uFF1A"
m_Text:
--- !u!1 &7570292331416418713
GameObject:
m_ObjectHideFlags: 0

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4151171443173648906
GameObject:

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &723290734874051712
GameObject:
@ -2526,8 +2526,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -224, y: 358}
m_SizeDelta: {x: 160, y: 30}
m_AnchoredPosition: {x: -18.450012, y: 358}
m_SizeDelta: {x: 571.1, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4614399930633415736
CanvasRenderer:
@ -2560,14 +2560,14 @@ MonoBehaviour:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 22
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 2
m_MaxSize: 40
m_BestFit: 1
m_MinSize: 20
m_MaxSize: 22
m_Alignment: 3
m_AlignByGeometry: 0
m_AlignByGeometry: 1
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 1
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: "\u64CD\u4F5C\u8BE6\u60C5\uFF1A"
--- !u!1 &6433369456735920292
@ -2835,8 +2835,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 115, y: 401}
m_SizeDelta: {x: 160, y: 30}
m_AnchoredPosition: {x: 335.1, y: 401}
m_SizeDelta: {x: 600, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8024291315218636464
CanvasRenderer:
@ -2869,14 +2869,14 @@ MonoBehaviour:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 18
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 40
m_BestFit: 1
m_MinSize: 15
m_MaxSize: 18
m_Alignment: 3
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 1
m_VerticalOverflow: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: "\u5B66\u5458:457898 \u5B8C\u6210\u8BAD\u7EC3\u79D1\u76EE\uFF1A\u7F16\u961F\u884C\u519B+\u4FEE\u7406\u6240\u5C55\u5F00"
--- !u!1 &6611560986485133716
@ -2897,7 +2897,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &3515239700554139175
RectTransform:
m_ObjectHideFlags: 0
@ -3143,6 +3143,7 @@ MonoBehaviour:
m_CaretBlinkRate: 0.85
m_CaretWidth: 1
m_ReadOnly: 0
m_ShouldActivateOnSelect: 1
--- !u!1 &7109321623463882742
GameObject:
m_ObjectHideFlags: 0
@ -3759,7 +3760,7 @@ RectTransform:
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
@ -3827,26 +3828,21 @@ PrefabInstance:
propertyPath: m_Name
value: TransportTimePre
objectReference: {fileID: 0}
- target: {fileID: 5346773284729297405, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 90
objectReference: {fileID: 0}
- target: {fileID: 5346773284729297405, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5346773284729297405, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5363330708825747453, guid: 628be995583da79498bb64c7335f4d85,
- target: {fileID: 5346773284729297405, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5346773284729297405, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 90
objectReference: {fileID: 0}
- target: {fileID: 5363330708825747453, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMax.x
@ -3857,9 +3853,19 @@ PrefabInstance:
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5363330708825747453, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5966996696604502574, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.r
propertyPath: m_Color.a
value: 0.5803922
objectReference: {fileID: 0}
- target: {fileID: 5966996696604502574, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.b
value: 0.4528302
objectReference: {fileID: 0}
- target: {fileID: 5966996696604502574, guid: 628be995583da79498bb64c7335f4d85,
@ -3869,13 +3875,53 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5966996696604502574, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.b
propertyPath: m_Color.r
value: 0.4528302
objectReference: {fileID: 0}
- target: {fileID: 5966996696604502574, guid: 628be995583da79498bb64c7335f4d85,
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.a
value: 0.5803922
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_RootOrder
value: 12
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_SizeDelta.x
value: -80
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_SizeDelta.y
value: 40
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
@ -3892,6 +3938,11 @@ PrefabInstance:
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_LocalRotation.x
@ -3909,13 +3960,13 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_RootOrder
value: 12
propertyPath: m_AnchoredPosition.y
value: 193
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
@ -3932,65 +3983,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 193
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_SizeDelta.x
value: -80
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_SizeDelta.y
value: 40
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6516190488594330770, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 7155700665145742217, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Enabled
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7155700665145742217, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.r
value: 0.18823531
propertyPath: m_Color.b
value: 0.8705883
objectReference: {fileID: 0}
- target: {fileID: 7155700665145742217, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
@ -3999,12 +3995,17 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7155700665145742217, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.b
value: 0.8705883
propertyPath: m_Color.r
value: 0.18823531
objectReference: {fileID: 0}
- target: {fileID: 7155700665145742217, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Enabled
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7779599871585014926, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.r
propertyPath: m_Color.b
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7779599871585014926, guid: 628be995583da79498bb64c7335f4d85,
@ -4014,12 +4015,12 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7779599871585014926, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.b
propertyPath: m_Color.r
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8925505950675575926, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.r
propertyPath: m_Color.b
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8925505950675575926, guid: 628be995583da79498bb64c7335f4d85,
@ -4029,12 +4030,12 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8925505950675575926, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.b
propertyPath: m_Color.r
value: 1
objectReference: {fileID: 0}
- target: {fileID: 9105819362390779676, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.r
propertyPath: m_Color.b
value: 1
objectReference: {fileID: 0}
- target: {fileID: 9105819362390779676, guid: 628be995583da79498bb64c7335f4d85,
@ -4044,7 +4045,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 9105819362390779676, guid: 628be995583da79498bb64c7335f4d85,
type: 3}
propertyPath: m_Color.b
propertyPath: m_Color.r
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1310088295168634044
GameObject:
@ -391,6 +391,7 @@ MonoBehaviour:
m_CaretBlinkRate: 0.85
m_CaretWidth: 1
m_ReadOnly: 0
m_ShouldActivateOnSelect: 1
--- !u!1 &1310088295257712714
GameObject:
m_ObjectHideFlags: 0
@ -749,6 +750,7 @@ MonoBehaviour:
m_CaretBlinkRate: 0.85
m_CaretWidth: 1
m_ReadOnly: 0
m_ShouldActivateOnSelect: 1
--- !u!1 &1310088295464901117
GameObject:
m_ObjectHideFlags: 0

View File

@ -1,4 +1,4 @@
%YAML 1.1
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &45754905435947487
GameObject:

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: ea503580c1e44e0e9e2b59a67552d42a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 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: 1
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
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -115,7 +115,6 @@ namespace XFramework
}
else
{
Debug.LogWarning($"SAMap中不存在{assetsName}");
return null;
}
}

View File

@ -84,7 +84,6 @@ namespace Public.File
if (DllTest.GetOpenFileName(ofn))
{
string replay_file_name = ofn.file.ToString();
Debug.Log(replay_file_name);
return replay_file_name;
}
else

View File

@ -15,23 +15,51 @@ public class TransportScoreCtrl : MonoBehaviour
UnityAction<float> scoreChangedEvent;
float useTime;
// Start is called before the first frame update
bool subscribed;
void Awake()
{
setBestTime.minValue = 1;
setBestTime.maxValue = 60;
setBestTime.value = 10;//默认处于10分钟状态
setBestTime.value = 10;
setBestTime.wholeNumbers = true;
setBestTime.onValueChanged.AddListener(SliderValueChanged);
}
/// <summary>
/// 注入初始化数据 注册分数变化事件 返回初始得分
/// </summary>
/// <param name="time">秒数</param>
/// <param name="scoreChanged">分数变化事件</param>
/// <returns>分数 </returns>
public float InjectTimeGetScore(float time,UnityAction<float > scoreChanged )
void OnEnable()
{
if (!subscribed)
{
LocalizationManager.LanguageChanged += OnLanguageChanged;
subscribed = true;
}
}
void OnDisable()
{
if (subscribed)
{
LocalizationManager.LanguageChanged -= OnLanguageChanged;
subscribed = false;
}
scoreChangedEvent = null;
setBestTime.value = 10;
}
private void OnLanguageChanged()
{
if (showBestTime != null && !string.IsNullOrEmpty(showBestTime.text))
{
LocalizationManager.SetFormatted(showBestTime, "{0}分钟", setBestTime.value);
}
if (showUseTime != null && !string.IsNullOrEmpty(showUseTime.text) && useTime > 0)
{
TimeSpan ts = TimeSpan.FromSeconds(useTime);
LocalizationManager.SetFormatted(showUseTime, "转运耗时:{0}分:{1}秒", ts.Minutes, ts.Seconds);
}
}
public float InjectTimeGetScore(float time, UnityAction<float> scoreChanged)
{
useTime = time;
TimeSpan ts = TimeSpan.FromSeconds(time);
@ -40,25 +68,16 @@ public class TransportScoreCtrl : MonoBehaviour
return GetScore(setBestTime.value);
}
//计算 扣除分数
float GetScore(float bestTime)
{
float bestTimeSeconds = bestTime * 60; //设置的是分钟 改为秒
if (bestTime * 60 >= useTime)//未超过最佳时间 不扣分
if (bestTime * 60 >= useTime)
return 0;
return 100 -100* bestTime / useTime; //超出时按照超出比例计算扣除分数 满分100
return 100 - 100 * bestTime / useTime;
}
private void SliderValueChanged( float value )
private void SliderValueChanged(float value)
{
LocalizationManager.SetFormatted(showBestTime, "{0}分钟", value);
scoreChangedEvent?.Invoke(GetScore(value));
}
private void OnDisable()
{
scoreChangedEvent = null;
setBestTime.value = 10;//默认处于10分钟状态
}
}

View File

@ -195,12 +195,15 @@ public class Subject1EditorCtrl : SubjectEditorBase
private void InitCarIcon()
{
Dictionary<string, EquipIconData> selectCars = new Dictionary<string, EquipIconData>();
// 先清除之前的装备图标 避免残留
equipContent.RemoveAll();
// 重新创建所有装备图标
List<string> carNames = new List<string>();
for (int i = 0; i < recordClass.usedEquips.Count; i++)
{
selectCars[recordClass.usedEquips[i].name] = recordClass.usedEquips[i];
carNames.Add(recordClass.usedEquips[i].name);
}
equipContent.SetInitMsg(selectCars);
equipContent.CreatChildren(carNames.ToArray(), EquipIconCreatOver);
}
//关闭界面时初始化界面

View File

@ -207,11 +207,26 @@ public class Subject2EditorCtrl : SubjectEditorBase
//直接在地图上创建车辆信息
private async void CreatOnMapCar( List<OnMapCarData> onMapCars)
{
for (int i = 0; i < recordClass.onMapCars.Count; i++)//创建车辆图标 并放置在地图上
for (int i = 0; i < recordClass.onMapCars.Count; i++)
{
string equipTypeName = onMapCars[i].name.Split('(')[0];
string path = StreamingAssetsManager.GetPath($"{equipTypeName}_Tex");
Sprite sprite = await OutSpriteLoader.LoadSprite(path);
string texKey = $"{equipTypeName}_Tex";
string path = StreamingAssetsManager.GetPath(texKey);
Sprite sprite = null;
if (!string.IsNullOrEmpty(path))
sprite = await OutSpriteLoader.LoadSprite(path);
// 如果外部贴图加载失败,从装备列表中查找对应图标
if (sprite == null)
{
foreach (var icon in equipContent.children.Values)
{
if (icon.text_IconName.text == equipTypeName)
{
sprite = icon.image_Icon.sprite;
break;
}
}
}
IconBase iconBase= CreatCarInstance(onMapCars[i].name, sprite);
iconBase.GetComponent<DragIcon>()?.SetFixedAnchoredPos(new Vector2(onMapCars[i].aPX, onMapCars[i].aPY));
AddOrRemoveCarOnMap(iconBase as CarIconInstanceCtrl,true);

View File

@ -16,57 +16,52 @@ public class EditorContentCtrl : MonoBehaviour
[Header("内部数据时勾选 否则加载外部数据")]
public bool buildInSprite;
public Dictionary<string, IconBase> children { get { return iconDic; } }
/// <summary>
/// 创建一系列子物体 加载外部UI资源时 使用await等待资源加载完成 内部资源无需等待
/// </summary>
/// <param name="carsName">子物体预制件名称</param>
public async void CreatChildren(string[] carsName,UnityAction CreatOverEvent=null)
private static Sprite _unifiedSprite;
private static Sprite GetUnifiedSprite()
{
if (needSprite&& !buildInSprite)//需要加载外部多个资源时
if (_unifiedSprite == null)
_unifiedSprite = Resources.Load<Sprite>("carIcon");
return _unifiedSprite;
}
public async void CreatChildren(string[] carsName, UnityAction CreatOverEvent = null)
{
Sprite unified = GetUnifiedSprite();
for (int i = 0; i < carsName.Length; i++)
{
string[] paths = new string[carsName.Length];
for (int i = 0; i < carsName.Length; i++)
IconBase icon = GetIcon(carsName[i]);
if (unified != null)
icon.SetSprite(unified);
else if (needSprite && !buildInSprite)
{
paths[i] = StreamingAssetsManager.GetPath($"{carsName[i]}_Tex");
string path = StreamingAssetsManager.GetPath($"{carsName[i]}_Tex");
Sprite sprite = await OutSpriteLoader.LoadSprite(path);
icon.SetSprite(sprite);
}
Sprite [] sprites= await OutSpriteLoader.LoadSprites(paths);
for (int i = 0; i < carsName.Length; i++)
else if (needSprite && buildInSprite)
{
IconBase icon = GetIcon(carsName[i]);
icon.SetSprite(sprites[i]);
CreatOverAndInitIcon(carsName[i],null,icon);
}
}
else
{
for (int i = 0; i < carsName.Length; i++)
{
if (CreatOverEvent != null && i == carsName.Length - 1)//最后一个加载完成后 触发加载完成事件
{
AddChild(carsName[i], null);
//Debug.Log("开始加载最后一张图片");
}
else
AddChild(carsName[i]);
Sprite sprite = Resources.Load<Sprite>(ResourcesManager.GetPath(carsName[i]));
icon.SetSprite(sprite);
}
CreatOverAndInitIcon(carsName[i], null, icon);
}
CreatOverEvent?.Invoke();
}
//名称重复时不生成新的元素 用新元素的数据覆盖原有的数据
public async void AddChild(string childName,object initMsg=null)
public async void AddChild(string childName, object initMsg = null)
{
//Debug.Log(childName);
IconBase iconBase = GetIcon(childName);
if (needSprite)
Sprite unified = GetUnifiedSprite();
if (unified != null)
{
iconBase.SetSprite(unified);
}
else if (needSprite)
{
Sprite sprite;
if (buildInSprite)
{
sprite = Resources.Load<Sprite>(ResourcesManager.GetPath(childName));
}
else
{
string path = StreamingAssetsManager.GetPath($"{childName}_Tex");
@ -75,10 +70,8 @@ public class EditorContentCtrl : MonoBehaviour
iconBase.SetSprite(sprite);
}
CreatOverAndInitIcon(childName, initMsg, iconBase);
//createOver?.Invoke();
}
//图标创建完成 加入字典 设置初始化数据
private void CreatOverAndInitIcon(string childName, object initMsg, IconBase iconBase)
{
iconDic[childName] = iconBase;
@ -87,7 +80,6 @@ public class EditorContentCtrl : MonoBehaviour
iconBase.SetUpdateIconMsg(initMsg);
}
//获取一个图标实例 优先从字典中获取避免重复 字典中不存在时创建
private IconBase GetIcon(string childName)
{
IconBase iconBase;
@ -98,10 +90,6 @@ public class EditorContentCtrl : MonoBehaviour
return iconBase;
}
/// <summary>
/// 移除一个元素
/// </summary>
/// <param name="childName"></param>
public void RemoveChild(string childName)
{
if (!iconDic.ContainsKey(childName)) return;
@ -110,38 +98,22 @@ public class EditorContentCtrl : MonoBehaviour
DBManager.Instance.DeleteABMsg(childName);
}
/// <summary>
/// 移除所有元素
/// </summary>
public void RemoveAll()
{
foreach (var item in iconDic)
{
Destroy(item.Value.gameObject);
}
iconDic.Clear();
}
/// <summary>
/// 初始化图标
/// </summary>
/// <typeparam name="TKey">图标创建时指定的唯一标识类</typeparam>
/// <typeparam name="TValue">图标初始化数据类</typeparam>
/// <param name="msgDic">数据集合</param>
public void SetInitMsg<TKey,TValue>(Dictionary<TKey, TValue> msgDic)
public void SetInitMsg<TKey, TValue>(Dictionary<TKey, TValue> msgDic)
{
if (msgDic != null)
{
foreach (var item in msgDic)
{
if (iconDic.ContainsKey(item.Key.ToString()))
{
iconDic[item.Key.ToString()].SetUpdateIconMsg(item.Value);
}
}
}
}
}

View File

@ -519,4 +519,11 @@
<item zh="无法为训练中的学员进行编组" en="Cannot group students currently in training" fr="Impossible de grouper des élèves en cours d'entraînement" ru="Нельзя группировать обучаемых в процессе тренировки" />
<item zh="组长不能为多人" en="Group leader cannot be multiple people" fr="Le chef de groupe ne peut pas être plusieurs personnes" ru="Руководитель группы не может быть несколькими лицами" />
<item zh="未分组的人员无法设为组长" en="Cannot set ungrouped person as group leader" fr="Impossible de définir une personne non groupée comme chef de groupe" ru="Нельзя назначить негруппированного руководителем группы" />
<item zh="型号组成" en="Model Composition" fr="Composition du modèle" ru="Состав модели" />
<item zh="装备数量" en="Equipment Count" fr="Nombre d'équipements" ru="Количество техники" />
<item zh="人员工种" en="Personnel Types" fr="Types de personnel" ru="Типы специалистов" />
<item zh="人员数量" en="Personnel Count" fr="Nombre de personnel" ru="Количество персонала" />
<item zh="车辆间距" en="Vehicle Spacing" fr="Espacement des véhicules" ru="Расстояние между машинами" />
<item zh="通路距离" en="Route Distance" fr="Distance de la route" ru="Дистанция маршрута" />
<item zh="厂区间距" en="Area Spacing" fr="Espacement des zones" ru="Расстояние между зонами" />
</translations>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9300a815fdc35444c83c059c99526604
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><Sub2RecordClass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><subName>修理所展开</subName><TerrainName>林地</TerrainName><fileIntr /><taskIntr /><OnMapCarData><name>CXW111型武器修理工程车</name><aPX>-3439.54541</aPX><aPY>1316.55212</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData><OnMapCarData><name>CXW111型武器修理工程车(1)</name><aPX>-3480.84668</aPX><aPY>1309.66858</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData><OnMapCarData><name>5吨火炮拆装车</name><aPX>-3568.03882</aPX><aPY>1325.73047</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic><Item><Key><string>600平米帐篷</string></Key><Value><int>1</int></Value></Item></onboardEquipDic></OnMapCarData><OnMapCarData><name>CXW111型武器修理工程车(2)</name><aPX>-3510.67554</aPX><aPY>1370.47351</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData></Sub2RecordClass>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6570d4f41c556404ca261cf53255e524
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><Sub2RecordClass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><subName>修理所展开</subName><TerrainName>丘陵</TerrainName><fileIntr /><taskIntr /><OnMapCarData><name>CXW111型武器修理工程车</name><aPX>-1925.30383</aPX><aPY>1160.544</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData></Sub2RecordClass>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: fd8e76a2127a0c842b5fc0a28c3225c3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><Sub2RecordClass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><subName>修理所展开</subName><TerrainName>林地</TerrainName><fileIntr /><taskIntr /><OnMapCarData><name>CXW111型武器修理工程车</name><aPX>-3477.07373</aPX><aPY>1315.79114</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData><OnMapCarData><name>5吨火炮拆装车</name><aPX>-3490.28442</aPX><aPY>1280.56238</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic><Item><Key><string>600平米帐篷</string></Key><Value><int>1</int></Value></Item></onboardEquipDic></OnMapCarData><OnMapCarData><name>5吨火炮拆装车(1)</name><aPX>-3526.39429</aPX><aPY>1317.55273</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic><Item><Key><string>600平米帐篷</string></Key><Value><int>1</int></Value></Item></onboardEquipDic></OnMapCarData></Sub2RecordClass>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 38fad3849ca05cc4ab510756bd9bc4c9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><Sub2RecordClass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><subName>修理所展开</subName><TerrainName>林地</TerrainName><fileIntr /><taskIntr /><OnMapCarData><name>CXW111型武器修理工程车</name><aPX>-3481.457</aPX><aPY>1305.62341</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData><OnMapCarData><name>5吨火炮拆装车</name><aPX>-3531.80518</aPX><aPY>1319.72107</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic><Item><Key><string>600平米帐篷</string></Key><Value><int>1</int></Value></Item></onboardEquipDic></OnMapCarData><OnMapCarData><name>CXW111型武器修理工程车(1)</name><aPX>-3580.1394</aPX><aPY>1343.88818</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData></Sub2RecordClass>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a3065c4818ceb044198aa61b4c504893
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><Sub2RecordClass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><subName>修理所展开</subName><TerrainName>林地</TerrainName><fileIntr /><taskIntr /><OnMapCarData><name>CXW111型武器修理工程车</name><aPX>-3481.457</aPX><aPY>1305.62341</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData><OnMapCarData><name>5吨火炮拆装车</name><aPX>-3531.80518</aPX><aPY>1319.72107</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic><Item><Key><string>600平米帐篷</string></Key><Value><int>1</int></Value></Item></onboardEquipDic></OnMapCarData><OnMapCarData><name>CXW111型武器修理工程车(1)</name><aPX>-3580.1394</aPX><aPY>1343.88818</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData><OnMapCarData><name>后勤装备通用维修车2002型</name><aPX>-3544.33765</aPX><aPY>1373.02466</aPY><angleZ>0</angleZ><onboardPersonDic /><onboardEquipDic /></OnMapCarData></Sub2RecordClass>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8d372bdcb95748a48b9a7da4559aaa6a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b16ee984a60dfb94b90b945cc4950d88
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -13,6 +13,7 @@
- [2026-07-31 15:49:27] BasePanel is NOT a MonoBehaviour — Unity's OnEnable/OnDisable are NOT called. Must use BasePanel's own virtual methods: OnStart() (called every Push), OnDisable() (called when covered), OnDestroy() (called on Pop). For LanguageChanged subscription in BasePanel subclasses, subscribe in InitEvent() (first time only) + OnStart() (every Push), unsubscribe in OnDisable() + OnDestroy(). **Why:** RecordDetailPanel lost translation subscription after Pop→Push cycle because InitEvent only runs once and Unity lifecycle methods don't fire on non-MonoBehaviour classes.
- [2026-08-03 11:58:13] LocalizationManager was forcing verticalOverflow=Overflow on all Text components when applying fonts, overriding prefab's Truncate setting. Removed all 3 forced verticalOverflow assignments (in Localize(Text), Localize(Dropdown), Localize(InputField)). Must preserve prefab's original verticalOverflow setting. **Why:** user set Truncate on Image_person2 prefab Text but runtime showed Overflow because LocalizationManager overwrote it during font application.
- [2026-08-03 17:15:04] PromptTextCtrl now has SetPromptLocalized(key, color, time, args) for real-time translation during the 3-second display window. Existing SetPrompt(msg, ...) calls with pre-translated strings do NOT update on language switch. Must use SetPromptLocalized when the prompt should re-translate while still visible. **Why:** user reported planning prompt not translating during 3s window. **How to apply:** replace SetPrompt(LocalizationManager.Get("key"), color, time) with SetPromptLocalized("key", color, time). For format strings: SetPromptLocalized("存在未规划的车辆{0}!", color, time, carName).
- [2026-08-04 11:12:54] When editing scenario files (想定文件), InitCarIcon() must RemoveAll() then CreatChildren() to rebuild equipment icons from scratch — NOT SetInitMsg() which only updates existing icons. Panel is reused across sessions so stale icons from previous edits cause UI mismatch. **Why:** user reported equipment list UI different when editing saved scenario vs creating new one.
### Project
- [2026-07-23 10:59:21] User is building a multi-language localization system (Chinese/English/French/Russian) for a Unity 2019.4 military equipment repair simulation training app. Translations are stored in `Assets/StreamingAssets/Localization.xml` (external XML, ~470 entries). Code fallback in `LocalizationManager.cs`. Key patterns: `SetFormatted()` for format strings, `InjectOperateMsgLocalized()` for operation records, `IconBase.SetName()` wraps `LocalizationManager.Get()`, `PromptWindowInitData` has key+args constructor for real-time translation of popups.
@ -26,6 +27,7 @@
- [2026-07-31 09:26:47] Desert (沙漠) terrain appears too bright/yellow at runtime vs editor. Root cause: Enviro weather system ("晴") deletes Directional Light and uses its own strong sun lighting. Desert sand textures are light-colored (avg RGB ~198,164,130), so under Enviro's full sun they look washed out. Mountain (山地) looks fine because its textures are darker (green/brown). This is a visual/aesthetic difference, not a code bug. EnviroSkyRendering + EnviroPostProcessing are added at runtime by MyEnviroManager.ChangeFocus to Camera.main. Camera prefab from Resources/GOPrefab/Camera.prefab does NOT have Enviro components - they're added dynamically.
- [2026-07-31 10:44:15] Terrain names finalized: 山地 renamed to 林地 (Forest/Forêt/Лес). Scene file: Assets/Scenes/林地.unity (was 山地.unity), NavMesh folder: Assets/Scenes/林地/, AB name: 林地, DB Name: 林地. All 4 terrains: 林地, 丘陵, 沙漠, 海岛. Old names (山地/平原/城市) completely removed from DB, SAMap, Localization.
- [2026-08-04 10:25:58] Continuous training flow (编队行军→修理所展开): SubStart() is called when entering Sub2 from Sub1 continuity. Cars may not be created yet when GetCarList() is accessed. Must fallback to CameraPos when carList is empty. AppraiseSliderCtrl pointName and WaitResultPanel appraiseLevel must use LocalizationManager.Get() for translation. EditorAppraiser.CheckAreaDistance/CheckAreaToWaterDistance must translate area names via Get() before Format().
- [2026-08-04 11:53:15] EditorContentCtrl now uses unified sprite (carIcon.png in Resources/) for ALL equipment icons instead of loading individual _Tex sprites. GetUnifiedSprite() loads via Resources.Load<Sprite>("carIcon"). If null, falls back to original needSprite logic. Subject2EditorCtrl.CreatOnMapCar also falls back to equipContent.children sprites when _Tex not found. carIcon.png must be in Resources/ with textureType:8 (Sprite) in .meta. New Resources assets require exe rebuild to include in resources.assets for student/teacher apps.
### Reference

File diff suppressed because it is too large Load Diff