From 5ffa9f6b5f819efc3a7508cfc8a30e634ff48319 Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Sun, 1 Sep 2024 18:40:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=92=8C=E7=BA=BF=E7=9A=84?= =?UTF-8?q?=E6=8B=86=E9=99=A4=E4=BB=A5=E5=8F=8A=E9=87=8D=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit view的visual管理,重构了line的初始化方式,支持用yarn初始化 --- Assets/Prefabs/InteractiveLineSegment.prefab | 197 +++ .../InteractiveLineSegment.prefab.meta | 7 + .../佩佩/Scripts/EyeTransitionManager.cs | 117 +- Assets/Prototype/佩佩/佩佩视觉模块.unity | 1085 +++++++++-------- Assets/Resources/Yarn/CrowBar/CrowBar1.yarn | 43 +- Assets/Resources/Yarn/CutLine/CutLine1.yarn | 6 +- Assets/Scripts/FixSystem/Cable/Plug.cs | 4 +- .../FixSystem/Crowbar/CrowBarSocket.cs | 6 +- Assets/Scripts/FixSystem/Crowbar/Crowbar.cs | 25 +- .../FixSystem/Line/InteractiveLineSegment.cs | 76 +- Assets/Scripts/FixSystem/Line/LineManager.cs | 164 ++- .../FixSystem/Line/PhysicLineSegment.cs | 3 +- .../FixSystem/Line/VisualLineSegment.cs | 5 +- 13 files changed, 1140 insertions(+), 598 deletions(-) create mode 100644 Assets/Prefabs/InteractiveLineSegment.prefab create mode 100644 Assets/Prefabs/InteractiveLineSegment.prefab.meta diff --git a/Assets/Prefabs/InteractiveLineSegment.prefab b/Assets/Prefabs/InteractiveLineSegment.prefab new file mode 100644 index 000000000..4031775e4 --- /dev/null +++ b/Assets/Prefabs/InteractiveLineSegment.prefab @@ -0,0 +1,197 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3506613774900747202 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3319291487393607640} + - component: {fileID: 230090618675107037} + - component: {fileID: 8433616502553146576} + - component: {fileID: 1631752023640685220} + m_Layer: 0 + m_Name: InteractiveLineSegment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3319291487393607640 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3506613774900747202} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &230090618675107037 +LineRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3506613774900747202} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 51099a9679b002c46b76c25f9ac139e3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 428640211 + m_SortingLayer: 4 + m_SortingOrder: 3 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.02299881 + value: 0.20912552 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 0.24528301, g: 0.24528301, b: 0.24528301, a: 1} + key1: {r: 0.3301887, g: 0.3301887, b: 0.3301887, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 6 + numCapVertices: 6 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 1 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 +--- !u!61 &8433616502553146576 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3506613774900747202} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 6.61, y: -0.60116494} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!114 &1631752023640685220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3506613774900747202} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 067e5e9e7bcd7a2429feff639d0ef630, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/InteractiveLineSegment.prefab.meta b/Assets/Prefabs/InteractiveLineSegment.prefab.meta new file mode 100644 index 000000000..c4a24bd29 --- /dev/null +++ b/Assets/Prefabs/InteractiveLineSegment.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6723369fb5eae81409a3677ffa80f504 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs b/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs index 941a976cd..a6e7b98bc 100644 --- a/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs +++ b/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs @@ -33,10 +33,12 @@ public class EyeTransitionManager : MonoBehaviour public Socket socket; //public InteractiveLineSegment lineSegment; // 线段 public ViewState viewState; - public Image VisualspriteRender; // 新增字段,用于保存视图的图片 - + public List Visuals; // 用于保存视图的图片列表 + public int currentVisualIndex = 0; public CrowBarSocket crowBarSocket; + //public GameObject extraGameobject; + private bool _isAvailable = false; // 视图是否可用的私有字段 // 视图是否可用的公有属性 @@ -79,6 +81,8 @@ public class EyeTransitionManager : MonoBehaviour EmoView, ColorView, SpeakView, + + UFViewBroken, //ColorView @@ -168,18 +172,14 @@ public class EyeTransitionManager : MonoBehaviour // 初始化视图状态和视图配置的映射 viewConfigDictionary = new Dictionary(); - // foreach (var config in viewConfigs) - // { - // viewConfigDictionary[config.viewState] = config; - // if (config.returnToMainViewButton != null) - // { - // // 绑定每个视图的返回MainView按钮 - // config.returnToMainViewButton.onClick.AddListener(() => StartTransition(ViewState.MainView)); - // } - // // 更新按钮的可用性 - // //config.activateButton.interactable = config.IsAvailable; - // //config.activateButton.gameObject.SetActive(false); - // } + foreach (var config in viewConfigs) + { + viewConfigDictionary[config.viewState] = config; + if(config.Visuals.Count!=0) + { + SetVisualState(config.viewState.ToString(),config.currentVisualIndex); + } + } LoadState(); } @@ -244,6 +244,7 @@ public class EyeTransitionManager : MonoBehaviour { foreach (var viewConfig in viewConfigs) { + if(viewConfig.viewPanel!=null) viewConfig.viewPanel.SetActive(false); } return; @@ -253,6 +254,7 @@ public class EyeTransitionManager : MonoBehaviour foreach (var viewConfig in viewConfigs) { + if(viewConfig.viewPanel!=null) viewConfig.viewPanel.SetActive(viewConfig.viewState == viewState); } } @@ -362,49 +364,58 @@ public void SetViewAvailability(string viewStateName, bool isAvailable) }); } } - [YarnCommand("Set_ViewVisual")] - public void ChangeSprite(string viewStateName, string spriteName) + // [YarnCommand("Set_ViewVisual")] + // public void ChangeSprite(string viewStateName, string spriteName) + // { + // ViewState viewState; + // if (!Enum.TryParse(viewStateName, out viewState)) + // { + // Debug.LogError("Invalid ViewState name: " + viewStateName); + // return; + // } + + // if (!viewConfigDictionary.TryGetValue(viewState, out ViewConfig config)) return; + + // // 加载新的图片 + // if (config.VisualspriteRender != null) + // { + // config.VisualspriteRender.sprite = Resources.Load(spriteName); + + // } + // } +[YarnCommand("Set_ViewVisualState")] +public void SetVisualState(string viewStateName, int visualIndex) +{ + Debug.Log("SetVisualState: "); + ViewState viewState; + if (!Enum.TryParse(viewStateName, out viewState)) { - ViewState viewState; - if (!Enum.TryParse(viewStateName, out viewState)) - { - Debug.LogError("Invalid ViewState name: " + viewStateName); - return; - } - - if (!viewConfigDictionary.TryGetValue(viewState, out ViewConfig config)) return; - - // 加载新的图片 - if (config.VisualspriteRender != null) - { - config.VisualspriteRender.sprite = Resources.Load(spriteName); - - } + Debug.LogError("Invalid ViewState name: " + viewStateName); + return; } - [YarnCommand("Set_ViewVisualState")] - public void SetVisualState(string viewStateName,bool isActive) + + if (!viewConfigDictionary.TryGetValue(viewState, out ViewConfig config)) { - ViewState viewState; - if (!Enum.TryParse(viewStateName, out viewState)) - { - Debug.LogError("Invalid ViewState name: " + viewStateName); - return; - } - - if (!viewConfigDictionary.TryGetValue(viewState, out ViewConfig config)) return; - - // 加载新的图片 - if (config.VisualspriteRender != null) - { - bool activeStatus = isActive; - config.VisualspriteRender.gameObject.SetActive(activeStatus); - } - if (config.socket != null) - { - bool activeStatus = isActive; - config.socket.gameObject.SetActive(activeStatus); - } + Debug.LogError("ViewState " + viewState + " not found in viewConfigDictionary"); + return; } + + if (visualIndex < 0 || visualIndex >= config.Visuals.Count) + { + Debug.LogError("Invalid visual index for " + viewStateName); + return; + } + + for (int i = 0; i < config.Visuals.Count; i++) + { + config.Visuals[i].SetActive(i == visualIndex); + } + + config.currentVisualIndex = visualIndex; + + +} + [YarnCommand("Set_VeiwCrowSocketAvailable")] public void SetCrowSocketAvailable(string viewStateName,bool isActive) { diff --git a/Assets/Prototype/佩佩/佩佩视觉模块.unity b/Assets/Prototype/佩佩/佩佩视觉模块.unity index fac8661a3..417ea9020 100644 --- a/Assets/Prototype/佩佩/佩佩视觉模块.unity +++ b/Assets/Prototype/佩佩/佩佩视觉模块.unity @@ -152,7 +152,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 7986261} m_Father: {fileID: 1652508981} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -605,11 +606,11 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1652508981} + m_Father: {fileID: 3590091} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -4.07, y: 0.65} + m_AnchoredPosition: {x: 0.009999275, y: -0.00999999} m_SizeDelta: {x: 0.556416, y: 0.526176} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &7986262 @@ -1405,6 +1406,81 @@ Transform: - {fileID: 2101488597} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &83859897 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 83859898} + - component: {fileID: 83859900} + - component: {fileID: 83859899} + m_Layer: 5 + m_Name: Color + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &83859898 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83859897} + 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: 851804189} + 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.009, y: 0.101} + m_SizeDelta: {x: 0.9, y: 0.9} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &83859899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83859897} + 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: -7908077779896976159, guid: d8489dc41f8c4c9479ba48d5bf39e02e, 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!222 &83859900 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83859897} + m_CullTransparentMesh: 1 --- !u!1 &120888150 GameObject: m_ObjectHideFlags: 0 @@ -2133,74 +2209,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 186430509} m_CullTransparentMesh: 1 ---- !u!1 &200033294 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 200033297} - - component: {fileID: 200033296} - - component: {fileID: 200033295} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &200033295 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 200033294} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: - m_SendPointerHoverToParent: 1 - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &200033296 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 200033294} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &200033297 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 200033294} - serializedVersion: 2 - 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: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &206891670 GameObject: m_ObjectHideFlags: 0 @@ -2971,203 +2979,6 @@ RectTransform: m_AnchoredPosition: {x: -5, y: 0} m_SizeDelta: {x: -20, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &223296687 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 223296691} - - component: {fileID: 223296690} - - component: {fileID: 223296689} - - component: {fileID: 223296688} - m_Layer: 0 - m_Name: MemoryUF - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &223296688 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 223296687} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 067e5e9e7bcd7a2429feff639d0ef630, type: 3} - m_Name: - m_EditorClassIdentifier: - startTransform: {fileID: 19183080} - endTransform: {fileID: 590852442} ---- !u!61 &223296689 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 223296687} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_ForceSendLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ForceReceiveLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ContactCaptureLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_CallbackLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 6.61, y: -0.60116494} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0, y: 0} - oldSize: {x: 0, y: 0} - newSize: {x: 0, y: 0} - adaptiveTilingThreshold: 0 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 1, y: 1} - m_EdgeRadius: 0 ---- !u!120 &223296690 -LineRenderer: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 223296687} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 51099a9679b002c46b76c25f9ac139e3, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 959782197 - m_SortingLayer: 7 - m_SortingOrder: 0 - m_Positions: - - {x: 0, y: 0, z: 0} - - {x: 0, y: 0, z: 1} - m_Parameters: - serializedVersion: 3 - widthMultiplier: 1 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0.02299881 - value: 0.20912552 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 6 - numCapVertices: 6 - alignment: 0 - textureMode: 0 - textureScale: {x: 1, y: 1} - shadowBias: 0.5 - generateLightingData: 0 - m_MaskInteraction: 0 - m_UseWorldSpace: 1 - m_Loop: 0 - m_ApplyActiveColorSpace: 1 ---- !u!4 &223296691 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 223296687} - serializedVersion: 2 - 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: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &240950625 stripped GameObject: m_CorrespondingSourceObject: {fileID: 1884111582262605784, guid: d8489dc41f8c4c9479ba48d5bf39e02e, type: 3} @@ -3656,6 +3467,94 @@ Canvas: m_SortingLayerID: 959782197 m_SortingOrder: 6 m_TargetDisplay: 0 +--- !u!1 &265611524 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 265611525} + - component: {fileID: 265611528} + - component: {fileID: 265611527} + - component: {fileID: 265611526} + m_Layer: 5 + m_Name: SocketUFBroken + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &265611525 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265611524} + m_LocalRotation: {x: -0, y: -0, z: 1, w: 0.0000029504295} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 851804189} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.009999275, y: -0.505} + m_SizeDelta: {x: 0.556416, y: 0.526176} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &265611526 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265611524} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2a37d0f43cb6f14c8011e55a756c448, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &265611527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265611524} + 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: 83cee37d2be8ac244ad6900c361ef447, 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!222 &265611528 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 265611524} + m_CullTransparentMesh: 1 --- !u!1 &266981787 GameObject: m_ObjectHideFlags: 0 @@ -4877,6 +4776,82 @@ RectTransform: m_AnchoredPosition: {x: -5, y: 0} m_SizeDelta: {x: -20, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &409657526 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 409657527} + - component: {fileID: 409657529} + - component: {fileID: 409657528} + m_Layer: 5 + m_Name: UFvisualBrokennoColor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &409657527 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409657526} + 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: 1177703834} + m_Father: {fileID: 1652508981} + 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: -4.08, y: 0.66} + m_SizeDelta: {x: 2, y: 1.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &409657528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409657526} + 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: 0} + 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!222 &409657529 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409657526} + m_CullTransparentMesh: 1 --- !u!1 &420385001 GameObject: m_ObjectHideFlags: 0 @@ -6058,7 +6033,7 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 587433358} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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 @@ -6068,7 +6043,7 @@ 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: -5.633, y: 0.685} + m_AnchoredPosition: {x: -5.6330004, y: 0.685} m_SizeDelta: {x: -2, y: 1.9999999} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &587433360 @@ -6928,6 +6903,41 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 603906212} m_CullTransparentMesh: 1 +--- !u!1 &607519723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 607519724} + m_Layer: 5 + m_Name: ColorEmpty + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &607519724 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 607519723} + 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: 1652508981} + 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: -4.08, y: 0.66} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1001 &612805709 PrefabInstance: m_ObjectHideFlags: 0 @@ -7765,6 +7775,81 @@ Material: - _ShadowColor: {r: 0, g: 0, b: 0, a: 1} - _ShineColor: {r: 1, g: 1, b: 1, a: 1} m_BuildTextureStacks: [] +--- !u!1 &660126420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 660126421} + - component: {fileID: 660126423} + - component: {fileID: 660126422} + m_Layer: 5 + m_Name: ColorVisual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &660126421 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 660126420} + 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: 1652508981} + 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: -2.37, y: 0.67} + m_SizeDelta: {x: 0.9, y: 0.9} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &660126422 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 660126420} + 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: -7908077779896976159, guid: d8489dc41f8c4c9479ba48d5bf39e02e, 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!222 &660126423 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 660126420} + m_CullTransparentMesh: 1 --- !u!1 &665143479 GameObject: m_ObjectHideFlags: 0 @@ -9383,6 +9468,83 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 5013648176251334136, guid: 7e1248171f8348e4db6e10ab0667a497, type: 3} m_PrefabInstance: {fileID: 1547278394} m_PrefabAsset: {fileID: 0} +--- !u!1 &851804188 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 851804189} + - component: {fileID: 851804191} + - component: {fileID: 851804190} + m_Layer: 5 + m_Name: UFvisualBroken + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &851804189 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 851804188} + 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: 265611525} + - {fileID: 83859898} + m_Father: {fileID: 1652508981} + 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: -4.08, y: 0.66} + m_SizeDelta: {x: 2, y: 1.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &851804190 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 851804188} + 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: 0} + 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!222 &851804191 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 851804188} + m_CullTransparentMesh: 1 --- !u!1 &854931313 GameObject: m_ObjectHideFlags: 0 @@ -9730,203 +9892,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 862177633} m_CullTransparentMesh: 1 ---- !u!1 &863689907 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 863689910} - - component: {fileID: 863689908} - - component: {fileID: 863689911} - - component: {fileID: 863689912} - m_Layer: 0 - m_Name: MemoryEye - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!120 &863689908 -LineRenderer: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 863689907} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 51099a9679b002c46b76c25f9ac139e3, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 959782197 - m_SortingLayer: 7 - m_SortingOrder: 0 - m_Positions: - - {x: 0, y: 0, z: 0} - - {x: 0, y: 0, z: 1} - m_Parameters: - serializedVersion: 3 - widthMultiplier: 1 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0.02299881 - value: 0.20912552 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 6 - numCapVertices: 6 - alignment: 0 - textureMode: 0 - textureScale: {x: 1, y: 1} - shadowBias: 0.5 - generateLightingData: 0 - m_MaskInteraction: 0 - m_UseWorldSpace: 1 - m_Loop: 0 - m_ApplyActiveColorSpace: 1 ---- !u!4 &863689910 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 863689907} - serializedVersion: 2 - 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: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!61 &863689911 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 863689907} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_ForceSendLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ForceReceiveLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ContactCaptureLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_CallbackLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 6.61, y: -0.60116494} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0, y: 0} - oldSize: {x: 0, y: 0} - newSize: {x: 0, y: 0} - adaptiveTilingThreshold: 0 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 1, y: 1} - m_EdgeRadius: 0 ---- !u!114 &863689912 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 863689907} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 067e5e9e7bcd7a2429feff639d0ef630, type: 3} - m_Name: - m_EditorClassIdentifier: - startTransform: {fileID: 1887941706} - endTransform: {fileID: 590852442} --- !u!1 &881978916 GameObject: m_ObjectHideFlags: 0 @@ -11338,37 +11303,51 @@ MonoBehaviour: - viewPanel: {fileID: 1229487019} socket: {fileID: 2031366194} viewState: 1 - VisualspriteRender: {fileID: 0} + Visuals: + - {fileID: 1278583899} + currentVisualIndex: 0 crowBarSocket: {fileID: 0} - viewPanel: {fileID: 1294333830} socket: {fileID: 7986262} viewState: 2 - VisualspriteRender: {fileID: 3590092} + Visuals: + - {fileID: 3590090} + - {fileID: 851804188} + - {fileID: 409657526} + - {fileID: 2081168091} + currentVisualIndex: 0 crowBarSocket: {fileID: 587433360} - viewPanel: {fileID: 1882925196} socket: {fileID: 1451543708} viewState: 3 - VisualspriteRender: {fileID: 0} + Visuals: [] + currentVisualIndex: 0 crowBarSocket: {fileID: 0} - viewPanel: {fileID: 0} socket: {fileID: 1261765723} viewState: 4 - VisualspriteRender: {fileID: 0} + Visuals: [] + currentVisualIndex: 0 crowBarSocket: {fileID: 0} - viewPanel: {fileID: 0} socket: {fileID: 697311004} viewState: 7 - VisualspriteRender: {fileID: 0} + Visuals: [] + currentVisualIndex: 0 crowBarSocket: {fileID: 0} - viewPanel: {fileID: 0} socket: {fileID: 144553463} viewState: 5 - VisualspriteRender: {fileID: 0} + Visuals: [] + currentVisualIndex: 0 crowBarSocket: {fileID: 0} - viewPanel: {fileID: 0} socket: {fileID: 585617291} viewState: 6 - VisualspriteRender: {fileID: 0} + Visuals: + - {fileID: 660126420} + - {fileID: 607519723} + currentVisualIndex: 0 crowBarSocket: {fileID: 0} CloseBookButton: {fileID: 791733126} --- !u!4 &1102365682 @@ -12305,6 +12284,94 @@ Material: - _ShadowColor: {r: 0, g: 0, b: 0, a: 1} - _ShineColor: {r: 1, g: 1, b: 1, a: 1} m_BuildTextureStacks: [] +--- !u!1 &1177703833 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1177703834} + - component: {fileID: 1177703837} + - component: {fileID: 1177703836} + - component: {fileID: 1177703835} + m_Layer: 5 + m_Name: SocketUFBroken + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1177703834 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177703833} + m_LocalRotation: {x: -0, y: -0, z: 1, w: 0.0000029504295} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 409657527} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.009999275, y: -0.505} + m_SizeDelta: {x: 0.556416, y: 0.526176} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1177703835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177703833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2a37d0f43cb6f14c8011e55a756c448, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1177703836 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177703833} + 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: 83cee37d2be8ac244ad6900c361ef447, 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!222 &1177703837 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177703833} + m_CullTransparentMesh: 1 --- !u!1 &1182811775 GameObject: m_ObjectHideFlags: 0 @@ -12334,6 +12401,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 11d7356c830440f48bbd0208dde62749, type: 3} m_Name: m_EditorClassIdentifier: + interactiveLineSegmentPrefab: {fileID: 1631752023640685220, guid: 6723369fb5eae81409a3677ffa80f504, type: 3} + lineSegmentInfos: + - Name: MemoryEye + StartTransform: {fileID: 2031366193} + EndTransform: {fileID: 1451543707} + - Name: MemoryUF + StartTransform: {fileID: 7986261} + EndTransform: {fileID: 1451543707} physicLineSegmentPrefab: {fileID: 3614166255594274803, guid: de9108583f2ddb646a6dc8e87e791e48, type: 3} customCursor: {fileID: 1761949063} --- !u!4 &1182811777 @@ -14272,10 +14347,18 @@ PrefabInstance: propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 1770343418} + - target: {fileID: -3819324015095923677, guid: d8489dc41f8c4c9479ba48d5bf39e02e, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: -3288671892723703735, guid: d8489dc41f8c4c9479ba48d5bf39e02e, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: -2961953986958284860, guid: d8489dc41f8c4c9479ba48d5bf39e02e, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: -2586898055405681282, guid: d8489dc41f8c4c9479ba48d5bf39e02e, type: 3} propertyPath: m_IsActive value: 0 @@ -14390,7 +14473,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7782309787341107538, guid: d8489dc41f8c4c9479ba48d5bf39e02e, type: 3} propertyPath: m_IsActive - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 9218586654918191133, guid: d8489dc41f8c4c9479ba48d5bf39e02e, type: 3} propertyPath: m_IsActive @@ -14475,7 +14558,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ee158225ee1e59f4791627785501d950, type: 3} m_Name: m_EditorClassIdentifier: - shaderTypes: 4 + shaderTypes: 0 normalStrength: 5 normalSmoothing: 1 computingNormal: 0 @@ -18532,16 +18615,20 @@ RectTransform: - {fileID: 590852442} - {fileID: 960673426} - {fileID: 420385002} + - {fileID: 587433359} + - {fileID: 660126421} + - {fileID: 2081168092} + - {fileID: 607519724} + - {fileID: 851804189} + - {fileID: 409657527} - {fileID: 3590091} - {fileID: 1079123346} - - {fileID: 7986261} - {fileID: 144553462} - {fileID: 1261765722} - {fileID: 697311003} - {fileID: 1451543707} - {fileID: 585617290} - {fileID: 2031366193} - - {fileID: 587433359} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -20220,11 +20307,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4101671748916885094, guid: 1afc7e4d2be0126438b5fe65aaccc901, type: 3} propertyPath: m_SortingLayer - value: 5 + value: 7 objectReference: {fileID: 0} - target: {fileID: 4101671748916885094, guid: 1afc7e4d2be0126438b5fe65aaccc901, type: 3} propertyPath: m_SortingOrder - value: 5 + value: 10 objectReference: {fileID: 0} - target: {fileID: 4101671748916885094, guid: 1afc7e4d2be0126438b5fe65aaccc901, type: 3} propertyPath: m_SortingLayerID @@ -24047,6 +24134,41 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1 &2081168091 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2081168092} + m_Layer: 5 + m_Name: UFempty + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2081168092 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2081168091} + 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: 1652508981} + 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: -4.08, y: 0.66} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!21 &2098166914 Material: serializedVersion: 8 @@ -25274,9 +25396,6 @@ SceneRoots: - {fileID: 1141076862} - {fileID: 1278583898} - {fileID: 1182811777} - - {fileID: 223296691} - - {fileID: 863689910} - {fileID: 1761949062} - {fileID: 886733272} - {fileID: 1654679524} - - {fileID: 200033297} diff --git a/Assets/Resources/Yarn/CrowBar/CrowBar1.yarn b/Assets/Resources/Yarn/CrowBar/CrowBar1.yarn index 8647a97ed..789761198 100644 --- a/Assets/Resources/Yarn/CrowBar/CrowBar1.yarn +++ b/Assets/Resources/Yarn/CrowBar/CrowBar1.yarn @@ -3,13 +3,46 @@ tags: --- <> <> +<> [command name=activate_socket_choice /] -<> -<> +<> +//<> + + +=== + +title: Day2 +tags: +--- +// <> +// <> +// <> +// <> <>//撬棍入场 -<>//设置这个模块是可拆的 +<> [options /] ->UFViewCrowBar//要拆除哪个veiw就加后缀 - <>//设置某个模块为false就是拆除 - 我: 拆除UF了 + <> + 我: 拆开了 + 我: 彻底拆掉吧 + <>//撬棍入场 + <> + [options /] + ->UFViewCrowBar + <> + 我: 彻底拆掉了 === +title: Day3 +tags: +--- +<> +我: 重新装上吧 +<> +我: 把色觉也装上吧 +<> +我: 盖子盖起来 +<> +我: 把我的色觉给佩佩吧 +<> + +=== diff --git a/Assets/Resources/Yarn/CutLine/CutLine1.yarn b/Assets/Resources/Yarn/CutLine/CutLine1.yarn index aa72f5bbd..231f500ac 100644 --- a/Assets/Resources/Yarn/CutLine/CutLine1.yarn +++ b/Assets/Resources/Yarn/CutLine/CutLine1.yarn @@ -10,7 +10,9 @@ tags: -> MemoryEyeScissor 我:剪断哦了 <> - -> MemoryUFScissor - 我:这个剪不断噢 + ->重新连接线 + <> + <> + <> === diff --git a/Assets/Scripts/FixSystem/Cable/Plug.cs b/Assets/Scripts/FixSystem/Cable/Plug.cs index bbb961411..dbd7a7e19 100644 --- a/Assets/Scripts/FixSystem/Cable/Plug.cs +++ b/Assets/Scripts/FixSystem/Cable/Plug.cs @@ -44,14 +44,14 @@ public class Plug : MonoBehaviour, IDragHandler, IPointerDownHandler, IPointerUp { // Dialogue has started, disable plug interactions IsInDialogue = true; - Debug.Log("in dialogue"); + //Debug.Log("in dialogue"); } void HandleDialogueComplete() { // Dialogue has completed, enable plug interactions IsInDialogue = false; - Debug.Log("dialoguecompleted"); + //Debug.Log("dialoguecompleted"); } diff --git a/Assets/Scripts/FixSystem/Crowbar/CrowBarSocket.cs b/Assets/Scripts/FixSystem/Crowbar/CrowBarSocket.cs index 56ceb722d..92fa08980 100644 --- a/Assets/Scripts/FixSystem/Crowbar/CrowBarSocket.cs +++ b/Assets/Scripts/FixSystem/Crowbar/CrowBarSocket.cs @@ -7,7 +7,7 @@ using System.Drawing; public class CrowBarSocket : MonoBehaviour, ISocket { // Start is called before the first frame update - public bool IsAvailable { get; set; } = false; + public bool IsAvailable { get; set; } = true; public Vector2 InsertionPoint => transform.position; public GameObject visual; @@ -35,6 +35,10 @@ public class CrowBarSocket : MonoBehaviour, ISocket { gameObject.SetActive(false); } + public void EnableSocket() + { + gameObject.SetActive(true); + } public Vector2 GetPosition() { diff --git a/Assets/Scripts/FixSystem/Crowbar/Crowbar.cs b/Assets/Scripts/FixSystem/Crowbar/Crowbar.cs index 452cdc65a..f61de2a5b 100644 --- a/Assets/Scripts/FixSystem/Crowbar/Crowbar.cs +++ b/Assets/Scripts/FixSystem/Crowbar/Crowbar.cs @@ -38,7 +38,6 @@ public class Crowbar : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragH private void Start() { crowbarOutPosition = transform.position; - crowbarSockets = new List(FindObjectsOfType()); } private void Initialize() @@ -50,6 +49,7 @@ public class Crowbar : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragH crowbarSocket=null; crowbarCanvas.sortingLayerName = "Tool"; crowbarCanvas.sortingOrder = 6; + crowbarSockets = new List(FindObjectsOfType()); } [YarnCommand("CrowBarIn")] @@ -67,6 +67,7 @@ public class Crowbar : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragH // }); box.DOMove(crowbarOutPosition, 1f); + transform.position=crowbarOutPosition; } public void OnBeginDrag(PointerEventData eventData) @@ -87,15 +88,15 @@ public class Crowbar : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragH public void OnDrag(PointerEventData eventData) { - //Debug.Log("Draging"); + Debug.Log("Draging"); if (IsInDialogue || isPryingCompleted) return; if (isInserted) { - Debug.Log("insert"); + Debug.Log("insert"); float deltaY = lastMousePosition.y - Input.mousePosition.y; lastMousePosition = Input.mousePosition; // 更新 lastMousePosition - Debug.Log("Progress :"+progress); + //Debug.Log("Progress :"+progress); progress += deltaY*0.3f * Time.deltaTime; progress = Mathf.Clamp01(progress); // 确保 progress 不会小于0 @@ -104,7 +105,7 @@ public void OnDrag(PointerEventData eventData) float startAngle = crowbarSocket.visual.transform.eulerAngles.z; float endAngle = startAngle + 40f; float currentAngle = Mathf.Lerp(startAngle, endAngle, progress); - Debug.Log("currentAngle :"+currentAngle); + //Debug.Log("currentAngle :"+currentAngle); // 更新撬棍的旋转角度 @@ -113,12 +114,13 @@ public void OnDrag(PointerEventData eventData) if (progress >= 1f) { crowbarSocket.Completed(); + crowbarSocket.EnableSocket(); // 触发撬动完成的逻辑 Debug.Log("Crowbar action completed."); isPryingCompleted = true; // 定义目标位置 - Vector3 targetPosition = transform.position + new Vector3(-1, 1, 0) * 10f; // 你可能需要根据你的场景来调整这个偏移量 + Vector3 targetPosition = transform.position + new Vector3(-1, 1, 0) * 6f; // 你可能需要根据你的场景来调整这个偏移量 // 使用 DOTween 来移动 crowbar transform.DOMove(targetPosition, 1f); @@ -165,6 +167,10 @@ public void OnEndDrag(PointerEventData eventData) foreach (var socket in crowbarSockets) { + if(!socket.gameObject.activeInHierarchy) + { + continue; + } float distance = Vector3.Distance(transform.position, socket.transform.position); if (distance <= minDistance && socket.IsAvailable) { @@ -182,10 +188,11 @@ public void OnEndDrag(PointerEventData eventData) crowbarVisual.rotation = nearestSocket.visual.transform.rotation; isInserted = true; nearestSocket.RemovePlug(); - nearestSocket.DisableSocket(); + nearestSocket.DisableSocket(); crowbarSocket=nearestSocket; crowbarCanvas.sortingLayerName = "UnderModule"; crowbarCanvas.sortingOrder = 6; + Debug.Log("crowbarsocket name"+crowbarSocket.name); } else { @@ -212,6 +219,10 @@ public CrowBarSocket FindNearestSocket() foreach (var socket in crowbarSockets) { + if(!socket.gameObject.activeInHierarchy) + { + continue; + } float distance = Vector3.Distance(transform.position, socket.transform.position); if (distance <= minDistance && socket.IsAvailable) { diff --git a/Assets/Scripts/FixSystem/Line/InteractiveLineSegment.cs b/Assets/Scripts/FixSystem/Line/InteractiveLineSegment.cs index b4471102a..d48c18ae8 100644 --- a/Assets/Scripts/FixSystem/Line/InteractiveLineSegment.cs +++ b/Assets/Scripts/FixSystem/Line/InteractiveLineSegment.cs @@ -4,7 +4,6 @@ using AibisDream; public class InteractiveLineSegment : VisualLineSegment { - [SerializeField] private Transform startTransform; public Transform StartTransform { @@ -12,7 +11,6 @@ public class InteractiveLineSegment : VisualLineSegment set { startTransform = value; } } - [SerializeField] private Transform endTransform; public Transform EndTransform { @@ -20,6 +18,8 @@ public class InteractiveLineSegment : VisualLineSegment set { endTransform = value; } } + private LineRenderer strokeLineRenderer; // 新的 LineRenderer 对象作为描边 + private BoxCollider2D boxCollider; private YarnOption _option; @@ -43,50 +43,70 @@ public class InteractiveLineSegment : VisualLineSegment public void OnHover() { - if (IsCuttable) - { - TurnGreen(); - } - else - { - TurnRed(); - } + strokeLineRenderer.enabled = true; + // if (IsCuttable) + // { + // TurnGreen(); + // } + // else + // { + // TurnRed(); + // } + } public void OnHoverExit() { - TurnGrey(); + // TurnGrey(); + strokeLineRenderer.enabled = false; } protected override void Awake() { base.Awake(); boxCollider = GetComponent(); + } public void Start() { Initialize(); + InitializeStrokeLineRenderer(); } + private LineRenderer CopyLineRenderer(LineRenderer source) +{ + LineRenderer newLineRenderer = new GameObject("StrokeLine").AddComponent(); + + // Copy the properties from the source LineRenderer to the new one + newLineRenderer.material = source.material; + newLineRenderer.startColor = source.startColor; + newLineRenderer.endColor = source.endColor; + newLineRenderer.startWidth = source.startWidth; + newLineRenderer.endWidth = source.endWidth; + newLineRenderer.numCornerVertices = source.numCornerVertices; + newLineRenderer.numCapVertices = source.numCapVertices; + newLineRenderer.positionCount = source.positionCount; + newLineRenderer.sortingLayerName = source.sortingLayerName; + newLineRenderer.sortingOrder = source.sortingOrder-1; + + // Set the parent of the new GameObject to the same as the source + newLineRenderer.transform.parent = source.transform; + + return newLineRenderer; +} +private void InitializeStrokeLineRenderer() +{ + strokeLineRenderer = CopyLineRenderer(GetComponent()); + // 设置描边的 LineRenderer 的属性 + strokeLineRenderer.SetPosition(0, StartTransform.position); + strokeLineRenderer.SetPosition(1, EndTransform.position); + strokeLineRenderer.endColor = Color.white; + strokeLineRenderer.startColor = Color.white; + strokeLineRenderer.widthMultiplier = lineRenderer.widthMultiplier * 1.2f; // 假设描边的宽度是原线条宽度的 1.2 倍 + strokeLineRenderer.enabled = false; // 初始时禁用描边 +} - - public void TurnGreen() - { - lineRenderer.material.color = Color.green; // 改变 LineRenderer 的颜色 - } - - public void TurnGrey() - { - lineRenderer.material.color = Color.grey; // 改变 LineRenderer 的颜色 - } - public void TurnRed() - { - lineRenderer.material.color = Color.red; // 改变 LineRenderer 的颜色 - } - - public void Initialize() { - TurnGrey(); if (StartTransform == null || EndTransform == null) { Debug.LogError("StartTransform or EndTransform is not set."); diff --git a/Assets/Scripts/FixSystem/Line/LineManager.cs b/Assets/Scripts/FixSystem/Line/LineManager.cs index 6f7378116..ed14bac45 100644 --- a/Assets/Scripts/FixSystem/Line/LineManager.cs +++ b/Assets/Scripts/FixSystem/Line/LineManager.cs @@ -6,10 +6,21 @@ using System.Collections; using AibisDream; using System.Linq; using DG.Tweening; - +[System.Serializable] +public class LineSegmentInfo +{ + public string Name; + public Transform StartTransform; + public Transform EndTransform; +} public class LineManager : MonoBehaviour { - //public GameObject interactiveLineSegmentPrefab; + public InteractiveLineSegment interactiveLineSegmentPrefab; // InteractiveLineSegment 的预制体 + [SerializeField] + private List lineSegmentInfos; // 线段信息的列表 + + // 线段字典,用于快速查找 + public GameObject physicLineSegmentPrefab; public CustomCursor customCursor; // 自定义光标,你可以在 Inspector 中设置 @@ -44,9 +55,20 @@ public class LineManager : MonoBehaviour } private InteractiveLineSegment currentLineSegment; // 当前要被剪断的线段 -private const float LONG_PRESS_THRESHOLD = 3.0f; // 长按阈值,可以根据需要调整 +private const float LONG_PRESS_THRESHOLD = 0.01f; // 长按阈值,可以根据需要调整 private float longPressTime = 0.0f; // 长按时间 -private float detectionRadius=0.4f; +private float detectionRadius=0.25f; + +private void SaveCutLine(string lineName) +{ + PlayerPrefs.SetString(lineName, "cut"); + PlayerPrefs.Save(); +} + +private bool IsLineCut(string lineName) +{ + return PlayerPrefs.HasKey(lineName); +} public void CutLine(InteractiveLineSegment originalLineSegment, Vector3 splitPoint) { @@ -60,17 +82,41 @@ public void CutLine(InteractiveLineSegment originalLineSegment, Vector3 splitPoi GameObject firstLineSegmentObject = Instantiate(physicLineSegmentPrefab, transform); PhysicLineSegment firstLineSegment = firstLineSegmentObject.GetComponent(); firstLineSegment.Initialize(originalLineSegment.StartTransform.position, splitPoint); + firstLineSegment.lineRenderer.startColor=originalLineSegment.lineRenderer.startColor; + firstLineSegment.lineRenderer.endColor=originalLineSegment.lineRenderer.endColor; // Create the second new line segment GameObject secondLineSegmentObject = Instantiate(physicLineSegmentPrefab, transform); PhysicLineSegment secondLineSegment = secondLineSegmentObject.GetComponent(); secondLineSegment.Initialize(originalLineSegment.EndTransform.position,splitPoint); - originalLineSegment.Option.SelectOption(); - + secondLineSegment.lineRenderer.startColor=originalLineSegment.lineRenderer.startColor; + secondLineSegment.lineRenderer.endColor=originalLineSegment.lineRenderer.endColor; // Immediately destroy the original line segment Destroy(originalLineSegment.gameObject); + Debug.Log("线销毁了"); + SaveCutLine(originalLineSegment.name); + + // Start the coroutine to destroy the new line segments after fade in and out + StartCoroutine(DestroyNewSegmentsAfterFade(firstLineSegmentObject, secondLineSegmentObject,originalLineSegment)); } +private IEnumerator DestroyNewSegmentsAfterFade(GameObject firstLineSegmentObject, GameObject secondLineSegmentObject,InteractiveLineSegment originalLineSegment) +{ + // Assume FadeIn() is a method that starts the fade in animation and returns the duration of the animation + float fadeDuration = 2f; + DialogController.FadeIn(fadeDuration); + // Wait for the fade in animation to finish + // Destroy the new line segments + yield return new WaitForSeconds(fadeDuration); + Destroy(firstLineSegmentObject); + Destroy(secondLineSegmentObject); + // Assume FadeOut() is a method that starts the fade out animation and returns the duration of the animation + DialogController.FadeOut(fadeDuration); + yield return new WaitForSeconds(fadeDuration); + originalLineSegment.Option.SelectOption(); +} + + private void AddPhysicsComponents(GameObject lineSegmentObject) { @@ -117,6 +163,8 @@ private void LongPressLineSegment(InteractiveLineSegment lineSegment) longPressTime += Time.deltaTime; Vector3 midpoint = (lineSegment.StartPoint + lineSegment.EndPoint) / 2; + float distance = Vector3.Distance(midpoint, lineSegment.StartPoint); + // Make the scissors shake and the line segment turn red if (longPressTime < LONG_PRESS_THRESHOLD) { @@ -127,11 +175,29 @@ private void LongPressLineSegment(InteractiveLineSegment lineSegment) // Move the scissors towards the midpoint //customCursor.transform.DOMove(midpoint, 0.1f); + + float progress = longPressTime / LONG_PRESS_THRESHOLD; + // Calculate the new position of the color gradient + float newPosition = progress * distance; + + // Create a new color gradient + // Gradient gradient = new Gradient(); + + // // Set the color keys of the gradient + // gradient.SetKeys( + // new GradientColorKey[] { new GradientColorKey(Color.red, 0.0f), new GradientColorKey(lineSegment.GetComponent().startColor, newPosition) }, + // new GradientAlphaKey[] { new GradientAlphaKey(1.0f, 0.0f), new GradientAlphaKey(1.0f, newPosition) } + // ); + + // // Set the color gradient of the LineRenderer + // lineSegment.GetComponent().colorGradient = gradient; } else { // Cut the line segment CutLine(lineSegment,midpoint); + IsScissorsMode=false; + Debug.Log("线剪断触发了"); } } @@ -139,7 +205,7 @@ private void ExitLineSegment() { if (currentLineSegment != null) { - currentLineSegment.TurnGrey(); + currentLineSegment.OnHoverExit(); } currentLineSegment = null; } @@ -195,16 +261,86 @@ private void ExitLineSegment() } +[YarnCommand("reconnected_line")] +public void Reconnected(string input) +{ + // Use GetLineSegmentName method to find the recognized name + string recognizedName = GetLineSegmentName(input); + + if (recognizedName == null) + { + Debug.LogError("Invalid LineSegmentInfo name: " + input); + return; + } + + // Find the LineSegmentInfo with the recognized name + LineSegmentInfo lineSegmentInfo = lineSegmentInfos.Find(info => info.Name == recognizedName); + + if (lineSegmentInfo == null) + { + Debug.LogError("Invalid LineSegmentInfo name: " + recognizedName); + return; + } + + // If the line is already cut, skip it + // if (!IsLineCut(lineSegmentInfo.Name)) + // { + // return; + // } + + // Instantiate a new line segment with the given info + InteractiveLineSegment newSegment = Instantiate(interactiveLineSegmentPrefab, transform); + newSegment.StartTransform = lineSegmentInfo.StartTransform; + newSegment.EndTransform = lineSegmentInfo.EndTransform; + newSegment.Initialize(); + + // Add the new line segment to the dictionary + //lineSegmentDictionary.Add(lineSegmentInfo.Name, newSegment); +} +[YarnCommand("delete_line")] +public void DeleteLine(string input) +{ + // Use GetLineSegmentName method to find the recognized name + string recognizedName = GetLineSegmentName(input); + + if (recognizedName == null) + { + Debug.LogError("Invalid LineSegmentInfo name: " + input); + return; + } + + if (lineSegmentDictionary.ContainsKey(recognizedName)) + { + InteractiveLineSegment lineSegmentToRemove = lineSegmentDictionary[recognizedName]; + lineSegmentDictionary.Remove(recognizedName); + + // Destroy the line segment GameObject + Destroy(lineSegmentToRemove.gameObject); + + Debug.Log("Line segment removed: " + recognizedName); + } + else + { + Debug.LogError("Line segment not found in dictionary: " + recognizedName); + } +} + private void Start() { - // 查找场景中的所有 InteractiveLineSegment 并添加到字典中 - InteractiveLineSegment[] lineSegments = FindObjectsOfType(); - foreach (InteractiveLineSegment lineSegment in lineSegments) - { - lineSegmentDictionary.Add(lineSegment.name, lineSegment); - Debug.Log("Added " + lineSegment.name + " to lineSegmentDictionary"); - } + foreach (LineSegmentInfo lineSegmentInfo in lineSegmentInfos) + { + if (IsLineCut(lineSegmentInfo.Name)) + { + continue; + } + InteractiveLineSegment newSegment = Instantiate(interactiveLineSegmentPrefab, transform); + newSegment.StartTransform = lineSegmentInfo.StartTransform; + newSegment.EndTransform = lineSegmentInfo.EndTransform; + newSegment.Initialize(); + lineSegmentDictionary.Add(lineSegmentInfo.Name, newSegment); + } + } public InteractiveLineSegment GetLineSegmentByName(string lineSegmentName) diff --git a/Assets/Scripts/FixSystem/Line/PhysicLineSegment.cs b/Assets/Scripts/FixSystem/Line/PhysicLineSegment.cs index 780267345..d7fae069e 100644 --- a/Assets/Scripts/FixSystem/Line/PhysicLineSegment.cs +++ b/Assets/Scripts/FixSystem/Line/PhysicLineSegment.cs @@ -12,7 +12,8 @@ public class PhysicLineSegment : MonoBehaviour private List particles = new List(); private List sticks = new List(); - private LineRenderer lineRenderer; + [HideInInspector] + public LineRenderer lineRenderer; private int segmentCount; public float gravity = -9.8f; diff --git a/Assets/Scripts/FixSystem/Line/VisualLineSegment.cs b/Assets/Scripts/FixSystem/Line/VisualLineSegment.cs index e4d55d05f..86cc462d3 100644 --- a/Assets/Scripts/FixSystem/Line/VisualLineSegment.cs +++ b/Assets/Scripts/FixSystem/Line/VisualLineSegment.cs @@ -5,8 +5,8 @@ public class VisualLineSegment : MonoBehaviour { public Vector3 StartPoint { get; private set; } public Vector3 EndPoint { get; private set; } - - protected LineRenderer lineRenderer; + [HideInInspector] + public LineRenderer lineRenderer; protected virtual void Awake() { @@ -23,6 +23,7 @@ public class VisualLineSegment : MonoBehaviour lineRenderer.SetPosition(1, EndPoint); } + // public void ShrinkAndDisappear() // { // // Shrink the line segment from the end to the start