【剧情】修改剧情UI打字机效果

main
chenyuqi 2023-10-26 15:54:29 +08:00
parent d685c14df8
commit ea53012ca9
4 changed files with 489 additions and 21 deletions

View File

@ -931,6 +931,141 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &1469755926660902031
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2860731738009002383}
- component: {fileID: 6418384612788494581}
- component: {fileID: 2340647538464592145}
m_Layer: 5
m_Name: TextName
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2860731738009002383
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1469755926660902031}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2033753882560062487}
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: -57, y: 88}
m_SizeDelta: {x: 450, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6418384612788494581
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1469755926660902031}
m_CullTransparentMesh: 1
--- !u!114 &2340647538464592145
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1469755926660902031}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u7231\u83B2\u5A1C"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: d996718f19de68245bc356be2938e063, type: 2}
m_sharedMaterial: {fileID: -8559898196655864114, guid: d996718f19de68245bc356be2938e063,
type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 42
m_fontSizeBase: 42
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &1475585034609502626
GameObject:
m_ObjectHideFlags: 0
@ -2581,6 +2716,83 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &3796025545843457487
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2033753882560062487}
- component: {fileID: 5148629855088998007}
- component: {fileID: 5665633161972886088}
m_Layer: 5
m_Name: Image_TalkBubble_Temp
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &2033753882560062487
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3796025545843457487}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2860731738009002383}
- {fileID: 7331808329746763499}
m_Father: {fileID: 2302059427182932267}
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: 0, y: 0}
m_SizeDelta: {x: 666, y: 325}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5148629855088998007
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3796025545843457487}
m_CullTransparentMesh: 1
--- !u!114 &5665633161972886088
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3796025545843457487}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 83e86a9afecfed046996f38a807a8cd8, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3991579420392655136
GameObject:
m_ObjectHideFlags: 0
@ -2996,6 +3208,141 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4520388352147286699
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7331808329746763499}
- component: {fileID: 7799218597793338592}
- component: {fileID: 303393358648275421}
m_Layer: 5
m_Name: TextContent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7331808329746763499
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4520388352147286699}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2033753882560062487}
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: -6, y: -37}
m_SizeDelta: {x: 550, y: 150}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7799218597793338592
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4520388352147286699}
m_CullTransparentMesh: 1
--- !u!114 &303393358648275421
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4520388352147286699}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u6D4B\u8BD5\u5B57\u4F53\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\uFF01\n\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u554A\u54C8\uFF01"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: d996718f19de68245bc356be2938e063, type: 2}
m_sharedMaterial: {fileID: -8559898196655864114, guid: d996718f19de68245bc356be2938e063,
type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &4987069716597858098
GameObject:
m_ObjectHideFlags: 0
@ -3193,6 +3540,8 @@ GameObject:
- component: {fileID: 2206581868767613941}
- component: {fileID: 4690445720608853069}
- component: {fileID: 4867117239906988904}
- component: {fileID: 7695404118532210937}
- component: {fileID: 2990696402303823139}
m_Layer: 5
m_Name: Image_TalkBubble
m_TagString: Untagged
@ -3219,7 +3568,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 666, y: 325}
m_SizeDelta: {x: 666, y: 245}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4690445720608853069
CanvasRenderer:
@ -3250,7 +3599,7 @@ MonoBehaviour:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 83e86a9afecfed046996f38a807a8cd8, type: 3}
m_Type: 0
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -3259,6 +3608,46 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &7695404118532210937
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5167920055620470441}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 51
m_Right: 0
m_Top: 49
m_Bottom: 50
m_ChildAlignment: 0
m_Spacing: 20
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &2990696402303823139
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5167920055620470441}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!1 &5458646378593024740
GameObject:
m_ObjectHideFlags: 0
@ -3291,9 +3680,9 @@ RectTransform:
m_Children: []
m_Father: {fileID: 2206581868767613941}
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: -57, y: 88}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 276, y: -74}
m_SizeDelta: {x: 450, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1009785222583772209
@ -5829,6 +6218,7 @@ GameObject:
- component: {fileID: 456174540843484769}
- component: {fileID: 3881795603619989684}
- component: {fileID: 5711817054934293086}
- component: {fileID: 6568463466929262540}
m_Layer: 5
m_Name: TextContent
m_TagString: Untagged
@ -5850,11 +6240,11 @@ RectTransform:
m_Children: []
m_Father: {fileID: 2206581868767613941}
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: -6, y: -37}
m_SizeDelta: {x: 550, y: 150}
m_Pivot: {x: 0.5, y: 0.5}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 51, y: -126.995}
m_SizeDelta: {x: 550, y: 60.01}
m_Pivot: {x: 0, y: 1}
--- !u!222 &3881795603619989684
CanvasRenderer:
m_ObjectHideFlags: 0
@ -5883,7 +6273,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u6D4B\u8BD5\u5B57\u4F53\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\uFF01\n\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u554A\u54C8\uFF01"
m_text: "\u6D4B\u8BD5\u5B57\u4F53\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\uFF01\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u554A\u54C8\uFF01"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: d996718f19de68245bc356be2938e063, type: 2}
m_sharedMaterial: {fileID: -8559898196655864114, guid: d996718f19de68245bc356be2938e063,
@ -5953,6 +6343,20 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!114 &6568463466929262540
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8256823080965662807}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!1 &8336706757057906441
GameObject:
m_ObjectHideFlags: 0
@ -6379,6 +6783,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2206581868767613941}
- {fileID: 2033753882560062487}
- {fileID: 8159813512205391015}
- {fileID: 6104782591014005104}
- {fileID: 109264313758130537}

View File

@ -49,7 +49,7 @@ TextureImporter:
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteBorder: {x: 0, y: 109, z: 0, w: 136}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
@ -139,7 +139,7 @@ TextureImporter:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
internalID: 1537655665
vertices: []
indices:
edges: []

View File

@ -569,7 +569,10 @@ public class TeamManager
{
if (LevelManager.Instance.CurrentLevel.IsInBattle())
{
return GameUnitMapper.Inst.GetUnitById(uid).gameunitType == EGameUnitType.Character;
if (IsInLevel(uid) || !m_allCharactersMap.ContainsKey(uid))
{
return GameUnitMapper.Inst.GetUnitById(uid).gameunitType == EGameUnitType.Character;
}
}
return GetUnitType(uid) == SingleTeamCharacterInfo.CharacType.Hero;
}

View File

@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using Framework;
using Gameplay.Story;
using Gameplay.Story.Cmp.Data;
@ -9,12 +10,12 @@ using Gameplay.Story.Cmp.Timeline.UIModChangeAction;
using PhxhSDK;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;
using Utils;
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
using ScrollView = AillieoUtils.ScrollView;
using DG.Tweening;
using UnityEngine.UI;
public class UIStoryMainController : UIWindow
{
@ -65,12 +66,13 @@ public class UIStoryMainController : UIWindow
private Dictionary<int, GameObject> _bubblePool; //不用的对话框对象池
private Dictionary<int, GameObject> _dispBubblePool; //正在展示的对话框对象池
private List<Image> _cgPool; //CG图片池
private Dictionary<int, bool> _playingDic; //播放状态
private bool _isAuto;
private bool _isSkipping;
private EDOpenChoiceData _openData; //打开对话选项传入Data
private int _selectIdx; //剧情分支选择Index
private List<LogData> _talkLogs; //剧情记录
private List<LogData> _talkLogs; //剧情记录
private Dictionary<int, string> _curBlockTalkDic; //当前每个角色对话内容缓存
private string _curBlock2DTalk; //2D模式下对话缓存
private int _cur2DTalkPlayerId; //2D模式下说话人缓存
@ -81,6 +83,10 @@ public class UIStoryMainController : UIWindow
public string msg;
}
private float _offsetX = -2.09f;
private float _offsetY = 5.17f;
private float _offsetZ = 0.83f;
// Use this for initialization
public override void OnAwake()
{
@ -100,6 +106,7 @@ public class UIStoryMainController : UIWindow
_dispBubblePool = new Dictionary<int, GameObject>();
_bubblePool = new Dictionary<int, GameObject>();
_cgPool = new List<Image>();
_playingDic = new Dictionary<int, bool>();
BindButtons();
StoryManager.instance.uiManager.LoadUIMainStory(this);
@ -123,6 +130,9 @@ public class UIStoryMainController : UIWindow
var player = StoryManager.instance.playerManager.playerDict[playerId];
var go = player.rootObj;
var playerPos = go.transform.position;
// playerPos.x += _offsetX;
// playerPos.y += _offsetY;
// playerPos.z += _offsetZ;
var pos = UIUtils.WorldPos2ScreenPos(playerPos, CameraManager.Instance.MainCamera);
pos = UIUtils.ScreenPos2WorldPos(pos, CameraManager.Instance.UICamera);
@ -180,6 +190,7 @@ public class UIStoryMainController : UIWindow
{
_talkLogs.Clear();
_curBlockTalkDic.Clear();
_playingDic.Clear();
ReleaseBubbles();
ReleaseCgImg();
}
@ -386,18 +397,20 @@ public class UIStoryMainController : UIWindow
return;
}
var player = GetPlayerById(talkData.playerId);
ShowPlayerTalk(talkData.playerId, player.playerName, talkData.talkMsg);
DoEnableBubbleObj(talkData.playerId);
ShowPlayerTalk(talkData.playerId, player.playerName, talkData.talkMsg);
_talkLogs.Add(new LogData(){name = player.playerName, msg = talkData.talkMsg});
}
private void ShowPlayerTalk(int playerId, string charName, string content)
private async void ShowPlayerTalk(int playerId, string charName, string content)
{
var go = GetBubbleObj(playerId);
var txtName = CommonUtils.GetComponent<TMP_Text>(go, "TextName");
var txtContent = CommonUtils.GetComponent<TMP_Text>(go, "TextContent");
txtName.text = charName;
txtContent.text = StringManager.GetStoryTalkText(content);
txtContent.ForceMeshUpdate();
await DoTyperText(txtContent, 100);
}
//检测是否旁白
@ -577,7 +590,45 @@ public class UIStoryMainController : UIWindow
}
return _curBlock2DTalk == content;
}
private async UniTask DoTyperText(TMP_Text tmpText, int waitTime)
{
var textInfo = tmpText.textInfo;
for (int i = 0; i < textInfo.materialCount; ++i)
{
textInfo.meshInfo[i].Clear();
}
tmpText.UpdateVertexData(TMP_VertexDataUpdateFlags.Vertices);
for (int i = 0; i < textInfo.characterCount; ++i)
{
await UniTask.Delay(waitTime);
TMP_CharacterInfo characterInfo = textInfo.characterInfo[i];
int materialIndex = characterInfo.materialReferenceIndex;
int verticeIndex = characterInfo.vertexIndex;
if (characterInfo.elementType == TMPro.TMP_TextElementType.Sprite)
{
verticeIndex = characterInfo.spriteIndex;
}
if (characterInfo.isVisible)
{
textInfo.meshInfo[materialIndex].vertices[0 + verticeIndex] = characterInfo.vertex_BL.position;
textInfo.meshInfo[materialIndex].vertices[1 + verticeIndex] = characterInfo.vertex_TL.position;
textInfo.meshInfo[materialIndex].vertices[2 + verticeIndex] = characterInfo.vertex_TR.position;
textInfo.meshInfo[materialIndex].vertices[3 + verticeIndex] = characterInfo.vertex_BR.position;
tmpText.UpdateVertexData(TMPro.TMP_VertexDataUpdateFlags.Vertices);
}
}
}
//打印单个字
private void TypeChar(string c, float deltaTime)
{
}
/***********/
//剧情对话记录
@ -635,11 +686,20 @@ public class UIStoryMainController : UIWindow
//监听事件
private void OnBlockEnd()
{
foreach (var bubble in _dispBubblePool)
{
CompleteBubble(bubble.Key, bubble.Value);
}
}
private void OnBlockStart()
{
HideAllEnableBubble();
}
void CompleteBubble(int playerId, GameObject go)
{
var txtContent = CommonUtils.GetComponent<TMP_Text>(go, "TextContent");
txtContent.text = _curBlockTalkDic[playerId];
}
}