diff --git a/EasyInteractive/Editor.meta b/EasyInteractive/Editor.meta new file mode 100644 index 0000000..da755ab --- /dev/null +++ b/EasyInteractive/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e49351aca911a5c4ca7a4d096973051c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EasyInteractive/Editor/EditorToolBarExtension.cs b/EasyInteractive/Editor/EditorToolBarExtension.cs new file mode 100644 index 0000000..b747f0d --- /dev/null +++ b/EasyInteractive/Editor/EditorToolBarExtension.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.Build; +using System.Linq; + +namespace HalfDog.EasyInteractive +{ + public static class EditorToolBarExtension + { + private static NamedBuildTarget buildTarget => NamedBuildTarget.FromBuildTargetGroup(EditorUserBuildSettings.selectedBuildTargetGroup); + [MenuItem("Settings/Interactive/Use 2D Mode")] + private static void Change2DSymbol() + { + var defines = PlayerSettings.GetScriptingDefineSymbols(buildTarget).Split(';').ToList(); + bool is2DMode = defines.Contains("INTERACTIVE_2D_MODE"); + Menu.SetChecked("Settings/Interactive/Use 2D Mode",!is2DMode); + if (is2DMode) + { + defines.Remove("INTERACTIVE_2D_MODE"); + } + else + { + defines.Add("INTERACTIVE_2D_MODE"); + } + string strDef = string.Join(";", defines); + PlayerSettings.SetScriptingDefineSymbols(buildTarget, strDef); + } + } +} diff --git a/EasyInteractive/Editor/EditorToolBarExtension.cs.meta b/EasyInteractive/Editor/EditorToolBarExtension.cs.meta new file mode 100644 index 0000000..2f8a46f --- /dev/null +++ b/EasyInteractive/Editor/EditorToolBarExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 685c5a3f45f7b8a45abe1c16ff7d0f78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EasyInteractive/Runtime.meta b/EasyInteractive/Runtime.meta new file mode 100644 index 0000000..a09e589 --- /dev/null +++ b/EasyInteractive/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6bb04fa27ab9c5479f687815ba7baca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EasyInteractive/DragSubjectFocusTargetInteractCase.cs b/EasyInteractive/Runtime/DragSubjectFocusTargetInteractCase.cs similarity index 100% rename from EasyInteractive/DragSubjectFocusTargetInteractCase.cs rename to EasyInteractive/Runtime/DragSubjectFocusTargetInteractCase.cs diff --git a/EasyInteractive/DragSubjectFocusTargetInteractCase.cs.meta b/EasyInteractive/Runtime/DragSubjectFocusTargetInteractCase.cs.meta similarity index 100% rename from EasyInteractive/DragSubjectFocusTargetInteractCase.cs.meta rename to EasyInteractive/Runtime/DragSubjectFocusTargetInteractCase.cs.meta diff --git a/EasyInteractive/EasyInteractive.cs b/EasyInteractive/Runtime/EasyInteractive.cs similarity index 90% rename from EasyInteractive/EasyInteractive.cs rename to EasyInteractive/Runtime/EasyInteractive.cs index 7b0465e..a4c80f6 100644 --- a/EasyInteractive/EasyInteractive.cs +++ b/EasyInteractive/Runtime/EasyInteractive.cs @@ -132,7 +132,35 @@ namespace HalfDog.EasyInteractive if (Camera.main == null) return; _isPointerOverUI = false; //射线检测 - Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition); + Vector3 mousePos = Input.mousePosition; +#if INTERACTIVE_2D_MODE + mousePos.z = -Camera.main.transform.position.z; + Vector2 mouseWorldPos = Camera.main.ScreenToWorldPoint(mousePos); + RaycastHit2D raycastHit2D = Physics2D.Raycast(mouseWorldPos, Vector2.zero,0); + if (raycastHit2D.transform != null) + { + if (raycastHit2D.transform.TryGetComponent(out IFocusable focus)) + { + if (focus != _currentFocused && focus.enableFocus) + SetCurrentFocused(focus); + } + else + { + SetCurrentFocused(null); + } + + if (raycastHit2D.transform.TryGetComponent(out ISelectable selectable) && selectable.enableSelect) + _readySelect = selectable; + else + _readySelect = null; + + if (raycastHit2D.transform.TryGetComponent(out IDragable dragable) && dragable.enableDrag) + _readyDrag = dragable; + else + _readyDrag = null; + } +#else + Ray mouseRay = Camera.main.ScreenPointToRay(mousePos); if (Physics.Raycast(mouseRay, out RaycastHit hitInfo, Mathf.Infinity)) { if (hitInfo.transform.TryGetComponent(out IFocusable focus)) @@ -155,6 +183,7 @@ namespace HalfDog.EasyInteractive else _readyDrag = null; } +#endif else { _readyDrag = null; diff --git a/EasyInteractive/EasyInteractive.cs.meta b/EasyInteractive/Runtime/EasyInteractive.cs.meta similarity index 100% rename from EasyInteractive/EasyInteractive.cs.meta rename to EasyInteractive/Runtime/EasyInteractive.cs.meta diff --git a/EasyInteractive/GameMonoUpdater.cs b/EasyInteractive/Runtime/GameMonoUpdater.cs similarity index 100% rename from EasyInteractive/GameMonoUpdater.cs rename to EasyInteractive/Runtime/GameMonoUpdater.cs diff --git a/EasyInteractive/GameMonoUpdater.cs.meta b/EasyInteractive/Runtime/GameMonoUpdater.cs.meta similarity index 100% rename from EasyInteractive/GameMonoUpdater.cs.meta rename to EasyInteractive/Runtime/GameMonoUpdater.cs.meta diff --git a/EasyInteractive/ICanUseGameMonoUpdater.cs b/EasyInteractive/Runtime/ICanUseGameMonoUpdater.cs similarity index 100% rename from EasyInteractive/ICanUseGameMonoUpdater.cs rename to EasyInteractive/Runtime/ICanUseGameMonoUpdater.cs diff --git a/EasyInteractive/ICanUseGameMonoUpdater.cs.meta b/EasyInteractive/Runtime/ICanUseGameMonoUpdater.cs.meta similarity index 100% rename from EasyInteractive/ICanUseGameMonoUpdater.cs.meta rename to EasyInteractive/Runtime/ICanUseGameMonoUpdater.cs.meta diff --git a/EasyInteractive/IInteractCase.cs b/EasyInteractive/Runtime/IInteractCase.cs similarity index 100% rename from EasyInteractive/IInteractCase.cs rename to EasyInteractive/Runtime/IInteractCase.cs diff --git a/EasyInteractive/IInteractCase.cs.meta b/EasyInteractive/Runtime/IInteractCase.cs.meta similarity index 100% rename from EasyInteractive/IInteractCase.cs.meta rename to EasyInteractive/Runtime/IInteractCase.cs.meta diff --git a/EasyInteractive/IInteractable.Extension.cs b/EasyInteractive/Runtime/IInteractable.Extension.cs similarity index 100% rename from EasyInteractive/IInteractable.Extension.cs rename to EasyInteractive/Runtime/IInteractable.Extension.cs diff --git a/EasyInteractive/IInteractable.Extension.cs.meta b/EasyInteractive/Runtime/IInteractable.Extension.cs.meta similarity index 100% rename from EasyInteractive/IInteractable.Extension.cs.meta rename to EasyInteractive/Runtime/IInteractable.Extension.cs.meta diff --git a/EasyInteractive/IInteractable.cs b/EasyInteractive/Runtime/IInteractable.cs similarity index 100% rename from EasyInteractive/IInteractable.cs rename to EasyInteractive/Runtime/IInteractable.cs diff --git a/EasyInteractive/IInteractable.cs.meta b/EasyInteractive/Runtime/IInteractable.cs.meta similarity index 100% rename from EasyInteractive/IInteractable.cs.meta rename to EasyInteractive/Runtime/IInteractable.cs.meta diff --git a/EasyInteractive/InteractCaseAttribute.cs b/EasyInteractive/Runtime/InteractCaseAttribute.cs similarity index 100% rename from EasyInteractive/InteractCaseAttribute.cs rename to EasyInteractive/Runtime/InteractCaseAttribute.cs diff --git a/EasyInteractive/InteractCaseAttribute.cs.meta b/EasyInteractive/Runtime/InteractCaseAttribute.cs.meta similarity index 100% rename from EasyInteractive/InteractCaseAttribute.cs.meta rename to EasyInteractive/Runtime/InteractCaseAttribute.cs.meta diff --git a/EasyInteractive/InteractableUIElement.cs b/EasyInteractive/Runtime/InteractableUIElement.cs similarity index 100% rename from EasyInteractive/InteractableUIElement.cs rename to EasyInteractive/Runtime/InteractableUIElement.cs diff --git a/EasyInteractive/InteractableUIElement.cs.meta b/EasyInteractive/Runtime/InteractableUIElement.cs.meta similarity index 100% rename from EasyInteractive/InteractableUIElement.cs.meta rename to EasyInteractive/Runtime/InteractableUIElement.cs.meta