Add 'IsBelongToSameCase'

This commit is contained in:
Steven Lai
2025-03-06 17:33:05 +08:00
parent 86375b8f67
commit ad5fff8425
8 changed files with 91 additions and 597 deletions
+41 -12
View File
@@ -24,6 +24,9 @@ namespace HalfDog.EasyInteractive
}
}
//交互对象之间的关系映射
public Dictionary<Type, List<Type>> InteractRelationMapper => _interactRelationMapper;
private IFocusable _currentFocused;
private IFocusable _previousFocused;
private ISelectable _currentSelected;
@@ -35,6 +38,7 @@ namespace HalfDog.EasyInteractive
private bool _isPointerOverUI;
private Dictionary<Type,IInteractCase> _allInteractCase = new Dictionary<Type,IInteractCase>();
private List<IInteractCase> _executingInteractCases = new List<IInteractCase>();
private Dictionary<Type, List<Type>> _interactRelationMapper = null;
//当前激活的交互情景
private IInteractCase _currentActiveInteractCase;
private bool _inUpdate;
@@ -58,9 +62,10 @@ namespace HalfDog.EasyInteractive
_instance = new EasyInteractive();
}
public EasyInteractive()
private EasyInteractive()
{
this.EnableMonoUpdater();
_interactRelationMapper = new Dictionary<Type, List<Type>>();
//加载所有的交互情景
Assembly assembly = typeof(EasyInteractive).Assembly;
List<Type> types = assembly.GetTypes().Where(type => typeof(IInteractCase).IsAssignableFrom(type) && !type.IsAbstract).ToList();
@@ -72,6 +77,17 @@ namespace HalfDog.EasyInteractive
_allInteractCase.Add(types[i],ic);
ic.enable = attribute.enableExecuteOnLoad;
_executingInteractCases.Add(ic);
//记录下交互对象之间的关系
List<Type> list;
if (_interactRelationMapper.TryGetValue(attribute.interactSubject, out list))
list.Add(attribute.interactTarget);
else
_interactRelationMapper.Add(attribute.interactSubject,new List<Type> { attribute.interactTarget });
if (_interactRelationMapper.TryGetValue(attribute.interactTarget, out list))
list.Add(attribute.interactSubject);
else
_interactRelationMapper.Add(attribute.interactTarget, new List<Type> { attribute.interactSubject });
}
}
}
@@ -157,24 +173,29 @@ namespace HalfDog.EasyInteractive
_possibleDragTarget = (currentFocused as IDragable);
}
//如果鼠标按下并且移动了一定距离则开始拖拽
if (mouseBtnPressed)
if (currentDraged == null && mouseBtnPressed && _possibleDragTarget != null)
{
if (currentDraged == null && Vector3.Distance(_mouseDownPosition, Input.mousePosition) > 16f)
if (Vector3.Distance(_mouseDownPosition, Input.mousePosition) > 16f && _readyDrag == _possibleDragTarget)
{
if (_possibleDragTarget != null && _readyDrag == _possibleDragTarget)
//拖拽与被选中的不能是同一个
if (_readyDrag == currentSelected)
{
//拖拽与被选中的不能是同一个
if (_readyDrag == currentSelected)
{
//把选择的对象置空
SetCurrentSelected(null);
}
//再设置拖拽
SetCurrentDraged(_readyDrag);
//把选择的对象置空
SetCurrentSelected(null);
}
//再设置拖拽
SetCurrentDraged(_readyDrag);
}
}
}
else
{
if (Input.GetMouseButtonDown(0))
{
_possibleDragTarget = null;
_readyDrag = null;
}
}
//拖拽处理
if (mouseBtnPressed && currentDraged != null)
@@ -261,6 +282,14 @@ namespace HalfDog.EasyInteractive
}
}
/// <summary>
/// 获取所有的交互情景
/// </summary>
/// <returns></returns>
public IInteractCase[] GetAllInteractCases()
{
return _allInteractCase.Values.ToArray();
}
public void FixedUpdate() { }
public void LateUpdate() { }
}
+17 -577
View File
@@ -198,7 +198,7 @@ Canvas:
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_VertexColorAlwaysGammaSpace: 1
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
@@ -216,7 +216,6 @@ RectTransform:
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1059271217}
- {fileID: 1625231574}
- {fileID: 498190671}
m_Father: {fileID: 0}
@@ -226,132 +225,6 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1 &191903456
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 191903457}
- component: {fileID: 191903462}
- component: {fileID: 191903461}
- component: {fileID: 191903460}
- component: {fileID: 191903458}
m_Layer: 2
m_Name: TempSceneItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &191903457
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 191903456}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 1.5, z: 0}
m_LocalScale: {x: 0.5, y: 1, z: 0.5}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1396306415}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &191903458
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 191903456}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5fea29bb7c508c244a1f805a5fd3fc4d, type: 3}
m_Name:
m_EditorClassIdentifier:
outlineMode: 0
outlineColor: {r: 0.13573885, g: 1, b: 0, a: 1}
outlineWidth: 5
precomputeOutline: 0
bakeKeys: []
bakeValues: []
--- !u!136 &191903460
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 191903456}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5000001
m_Height: 2
m_Direction: 1
m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697}
--- !u!23 &191903461
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 191903456}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: ad698dcb1f015e74585d9d1397c722bc, 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: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &191903462
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 191903456}
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &399887398
GameObject:
m_ObjectHideFlags: 0
@@ -558,7 +431,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 637063d8e14f01b40a70497c738425bd, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &670213194
--- !u!1 &1031195270
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -566,274 +439,56 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 670213198}
- component: {fileID: 670213197}
- component: {fileID: 670213196}
- component: {fileID: 670213195}
- component: {fileID: 670213199}
- component: {fileID: 670213200}
- component: {fileID: 1031195271}
- component: {fileID: 1031195272}
- component: {fileID: 1031195273}
m_Layer: 0
m_Name: SceneItem
m_Name: Game
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!136 &670213195
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670213194}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5000001
m_Height: 2
m_Direction: 1
m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697}
--- !u!23 &670213196
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670213194}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: fc54c2611d7066942a5b854425e8879b, 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: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &670213197
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670213194}
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &670213198
--- !u!4 &1031195271
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670213194}
m_GameObject: {fileID: 1031195270}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 2, z: -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!114 &670213199
--- !u!114 &1031195272
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670213194}
m_GameObject: {fileID: 1031195270}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc46a818fd9886f4a89e1148cb61fb5a, type: 3}
m_Script: {fileID: 11500000, guid: 72a3401ad569dce41a926bb393f5cfc4, type: 3}
m_Name:
m_EditorClassIdentifier:
iconSprite: {fileID: 21300000, guid: d5c97c10483bdf345b6ddc0512bfada7, type: 3}
--- !u!114 &670213200
playMode: 2
--- !u!114 &1031195273
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 670213194}
m_GameObject: {fileID: 1031195270}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5fea29bb7c508c244a1f805a5fd3fc4d, type: 3}
m_Script: {fileID: 11500000, guid: e2dd8b24bcc0ff64a867856ad3a8e6ca, type: 3}
m_Name:
m_EditorClassIdentifier:
outlineMode: 0
outlineColor: {r: 0.13573885, g: 1, b: 0, a: 1}
outlineWidth: 5
precomputeOutline: 0
bakeKeys: []
bakeValues: []
--- !u!1 &1059271216
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1059271217}
- component: {fileID: 1059271219}
- component: {fileID: 1059271218}
- component: {fileID: 1059271220}
- component: {fileID: 1059271221}
m_Layer: 5
m_Name: UIItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1059271217
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1059271216}
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: 2027494078}
m_Father: {fileID: 114661276}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
m_AnchoredPosition: {x: 0, y: 64}
m_SizeDelta: {x: 200, y: 200}
m_Pivot: {x: 0.5, y: 0}
--- !u!114 &1059271218
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1059271216}
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: 0.764151, g: 0.59304047, b: 0.43614277, 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 &1059271219
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1059271216}
m_CullTransparentMesh: 1
--- !u!114 &1059271220
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1059271216}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1263b19a7ad3f9e42ae0df0e3f70afc6, type: 3}
m_Name:
m_EditorClassIdentifier:
enableInteract: 1
icon: {fileID: 2027494079}
--- !u!114 &1059271221
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1059271216}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.6886792, g: 0.6886792, b: 0.6886792, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1059271218}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &1346634428
GameObject:
m_ObjectHideFlags: 0
@@ -939,145 +594,6 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1396306411
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1396306415}
- component: {fileID: 1396306414}
- component: {fileID: 1396306413}
- component: {fileID: 1396306412}
- component: {fileID: 1396306416}
- component: {fileID: 1396306417}
m_Layer: 0
m_Name: Table
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!65 &1396306412
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1396306411}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &1396306413
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1396306411}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: b11820ee1c2f3e344ba5395f8e0fad9b, 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: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1396306414
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1396306411}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &1396306415
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1396306411}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.5, z: -1}
m_LocalScale: {x: 2, y: 1, z: 2}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 191903457}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1396306416
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1396306411}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5fea29bb7c508c244a1f805a5fd3fc4d, type: 3}
m_Name:
m_EditorClassIdentifier:
outlineMode: 1
outlineColor: {r: 1, g: 0, b: 0, a: 1}
outlineWidth: 8
precomputeOutline: 0
bakeKeys: []
bakeValues: []
--- !u!114 &1396306417
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1396306411}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2c72fe5ebd1ffbd4d9dda7c9ff7b864b, type: 3}
m_Name:
m_EditorClassIdentifier:
tempItem: {fileID: 191903456}
--- !u!1 &1625231571
GameObject:
m_ObjectHideFlags: 0
@@ -1146,81 +662,6 @@ Transform:
m_Children: []
m_Father: {fileID: 114661276}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2027494077
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2027494078}
- component: {fileID: 2027494080}
- component: {fileID: 2027494079}
m_Layer: 5
m_Name: Icon
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &2027494078
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2027494077}
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: 1059271217}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -32, y: -32}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2027494079
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2027494077}
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 &2027494080
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2027494077}
m_CullTransparentMesh: 1
--- !u!1 &2117160339
GameObject:
m_ObjectHideFlags: 0
@@ -1366,5 +807,4 @@ SceneRoots:
- {fileID: 399887400}
- {fileID: 114661276}
- {fileID: 1346634432}
- {fileID: 1396306415}
- {fileID: 670213198}
- {fileID: 1031195271}
+2 -2
View File
@@ -113,8 +113,8 @@ Material:
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 0.495283, b: 0.5359876, a: 1}
- _Color: {r: 1, g: 0.495283, b: 0.5359876, a: 1}
- _BaseColor: {r: 0.2242791, g: 0.27632275, b: 0.754717, a: 1}
- _Color: {r: 0.22427908, g: 0.27632272, b: 0.75471693, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
+2 -2
View File
@@ -126,8 +126,8 @@ Material:
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 0.3679245, g: 0.24217868, b: 0.15445887, a: 1}
- _Color: {r: 0.36792448, g: 0.24217865, b: 0.15445882, a: 1}
- _BaseColor: {r: 0.11779833, g: 1, b: 0, a: 1}
- _Color: {r: 0.117798306, g: 1, b: 0, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
+2 -2
View File
@@ -37,8 +37,8 @@ public class SceneItem : MonoBehaviour, IDragable
public void EndDrag(IFocusable target)
{
GhostIcon.Instance.HideGhostIcon();
//判断是否拖拽到了目标
if (target == null)
//判断是否拖拽到了目标 且当前对象和目标对象是否属于同一个交互对象
if (target == null || !this.IsBelongToSameCase(target))
gameObject.SetActive(true);
}
}
+2 -2
View File
@@ -36,8 +36,8 @@ public class UIItem : InteractableUIElement,IDragable
public void EndDrag(IFocusable target)
{
GhostIcon.Instance.HideGhostIcon();
//判断是否拖拽到了目标
if (target == null)
//判断是否拖拽到了目标 且当前对象和目标对象是否属于同一个交互对象
if (target == null || !this.IsBelongToSameCase(target))
icon.gameObject.SetActive(true);
}
}
@@ -0,0 +1,14 @@
using HalfDog.EasyInteractive;
using System;
using System.Collections.Generic;
public static class IInteractableExtension
{
/// <summary>
/// 判断两个交互对象是否属于同一个交互情景
/// </summary>
public static bool IsBelongToSameCase(this IInteractable self, IInteractable other)
{
return EasyInteractive.Instance.InteractRelationMapper.TryGetValue(self.interactTag, out List<Type> types) && types.Contains(other.interactTag);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e84fea0140853814fbe4f015b0ba58c0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: