1
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 498e3f400477d1040a16f935cc815387
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,38 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 相机控制器
|
||||
/// </summary>
|
||||
public abstract class CameraController : MonoBehaviour {
|
||||
/// <summary> 位置 </summary>
|
||||
public abstract Vector3 Position { get; set; }
|
||||
/// <summary> 正向 </summary>
|
||||
public abstract Vector3 Forward { get; set; }
|
||||
/// <summary> 右向 </summary>
|
||||
public abstract Vector3 Right { get; set; }
|
||||
/// <summary> 旋转 </summary>
|
||||
public abstract Vector3 EulerAngles { get; set; }
|
||||
/// <summary> 视野 </summary>
|
||||
public abstract float VisualField { get; set; }
|
||||
|
||||
/// <summary> 初始化 </summary>
|
||||
public virtual void Initial() {
|
||||
ModuleCamera.OnCameraMode += ModuleCamera_OnCameraMode;
|
||||
}
|
||||
/// <summary> 释放 </summary>
|
||||
public virtual void Release() {
|
||||
ModuleCamera.OnCameraMode -= ModuleCamera_OnCameraMode;
|
||||
}
|
||||
|
||||
/// <summary> 相机模式 </summary>
|
||||
public abstract void ModuleCamera_OnCameraMode(EnumCameraMode mode);
|
||||
/// <summary> 重置相机 </summary>
|
||||
public abstract void ResetCamera();
|
||||
|
||||
/// <summary> 屏幕坐标转换世界坐标 </summary>
|
||||
public virtual Vector3 ScreenToWorldPosition(Vector3 screenPosition) {
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4e120a7c12f40d74cac5e48d41461d2c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d00e77fe0a528d74b9779c92c146dcf8
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,61 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 移轴 - 相机
|
||||
/// </summary>
|
||||
public class CameraAxis : CameraController {
|
||||
|
||||
public Camera mainCamera;
|
||||
public Camera Screenshot;
|
||||
|
||||
[HideInInspector]
|
||||
public RenderTexture renderTexture;
|
||||
|
||||
private float originalVisualField;
|
||||
private Vector3 originalPosition;
|
||||
private Vector3 originalEulerAngles;
|
||||
|
||||
public override Vector3 Position {
|
||||
get => transform.position;
|
||||
set => transform.position = value;
|
||||
}
|
||||
public override Vector3 Forward {
|
||||
get => mainCamera.transform.forward;
|
||||
set => mainCamera.transform.forward = value;
|
||||
}
|
||||
public override Vector3 Right {
|
||||
get => mainCamera.transform.right;
|
||||
set => mainCamera.transform.right = value;
|
||||
}
|
||||
public override Vector3 EulerAngles {
|
||||
get => transform.eulerAngles;
|
||||
set => transform.eulerAngles = value;
|
||||
}
|
||||
public override float VisualField {
|
||||
get => mainCamera.transform.localPosition.z;
|
||||
set => mainCamera.transform.localPosition = new Vector3(0, 0, value);
|
||||
}
|
||||
|
||||
public override void Initial() {
|
||||
base.Initial();
|
||||
originalPosition = Position;
|
||||
originalEulerAngles = EulerAngles;
|
||||
originalVisualField = VisualField;
|
||||
|
||||
renderTexture = new RenderTexture(1920, 1080, 16, RenderTextureFormat.ARGB32);
|
||||
Screenshot.targetTexture = renderTexture;
|
||||
}
|
||||
public override void ModuleCamera_OnCameraMode(EnumCameraMode mode) {
|
||||
gameObject.SetActive(mode == EnumCameraMode.Axis);
|
||||
if (mode == EnumCameraMode.Axis) { ModuleCamera.CurrentCamera = this; }
|
||||
}
|
||||
|
||||
public override void ResetCamera() {
|
||||
// if (!Utilities.FindObject(out MonoSceneSettings settings)) { return; }
|
||||
// Position = settings.initialPosition.position;
|
||||
// EulerAngles = settings.initialPosition.eulerAngles;
|
||||
// VisualField = settings.visualField.localPosition.z;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a57fb20032bb3e5488a7b363d12f19fd
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,43 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 默认 - 相机
|
||||
/// </summary>
|
||||
public class CameraDefault : CameraController {
|
||||
|
||||
public Camera mainCamera;
|
||||
|
||||
public override Vector3 Position {
|
||||
get => transform.position;
|
||||
set => transform.position = value;
|
||||
}
|
||||
public override Vector3 Forward {
|
||||
get => mainCamera.transform.forward;
|
||||
set => mainCamera.transform.forward = value;
|
||||
}
|
||||
public override Vector3 Right {
|
||||
get => mainCamera.transform.right;
|
||||
set => mainCamera.transform.right = value;
|
||||
}
|
||||
public override Vector3 EulerAngles {
|
||||
get => transform.eulerAngles;
|
||||
set => transform.eulerAngles = value;
|
||||
}
|
||||
public override float VisualField {
|
||||
get => throw new System.NotImplementedException();
|
||||
set => throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public override void ModuleCamera_OnCameraMode(EnumCameraMode mode) {
|
||||
gameObject.SetActive(mode == EnumCameraMode.None);
|
||||
if (mode == EnumCameraMode.None) { ModuleCamera.CurrentCamera = this; }
|
||||
}
|
||||
|
||||
public override void ResetCamera() {
|
||||
// if (!Utilities.FindObject(out SettingsScene settings)) { return; }
|
||||
// transform.position = settings.InitialPosition.position;
|
||||
// transform.eulerAngles = settings.InitialPosition.eulerAngles;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 317ca1fd043483b42b67b042380a2f54
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using MuHua;
|
||||
|
||||
/// <summary>
|
||||
/// 相机模块
|
||||
/// </summary>
|
||||
public class ModuleCamera : ModuleSingle<ModuleCamera> {
|
||||
|
||||
/// <summary> 当前相机 </summary>
|
||||
public static CameraController CurrentCamera;
|
||||
/// <summary> 相机模式事件 </summary>
|
||||
public static event Action<EnumCameraMode> OnCameraMode;
|
||||
|
||||
/// <summary> 设置相机模式 </summary>
|
||||
public static void Settings(EnumCameraMode mode, bool isReset = true) {
|
||||
OnCameraMode?.Invoke(mode);
|
||||
if (isReset) { I.ResetCamera(); }
|
||||
}
|
||||
|
||||
public List<CameraController> cameras;
|
||||
|
||||
protected override void Awake() {
|
||||
NoReplace();
|
||||
cameras.ForEach(obj => obj.Initial());
|
||||
}
|
||||
|
||||
private void OnDestroy() => cameras.ForEach(obj => obj.Release());
|
||||
|
||||
/// <summary> 重置相机 </summary>
|
||||
public void ResetCamera() => cameras.ForEach(obj => obj.ResetCamera());
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 相机模式
|
||||
/// </summary>
|
||||
public enum EnumCameraMode {
|
||||
None,// 无
|
||||
|
||||
Axis,// 移轴相机
|
||||
|
||||
// FreeEdit,// 自由编辑
|
||||
|
||||
// ThirdPerson,// 第三人称
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 745a630404a79d243a8041c505ec469c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1c72786dd03e5934cb9edc370f3127ab
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,20 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
/// <summary>
|
||||
/// 基础输入
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(PlayerInput))]
|
||||
public class InputBasic : MonoBehaviour {
|
||||
public Vector3 mousePosition;
|
||||
|
||||
#region 输入系统
|
||||
/// <summary> 鼠标位置 </summary>
|
||||
public void OnMousePosition(InputValue inputValue) {
|
||||
mousePosition = inputValue.Get<Vector2>();
|
||||
ModuleInput.mousePosition = mousePosition;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dee866dfe25bee147af6c082a02e6088
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
/// <summary>
|
||||
/// 输入 - 控制
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(PlayerInput))]
|
||||
public abstract class InputControl : MonoBehaviour {
|
||||
|
||||
protected virtual void Awake() {
|
||||
ModuleInput.OnInputMode += ModuleInput_OnInputMode;
|
||||
}
|
||||
|
||||
protected virtual void OnDestroy() {
|
||||
ModuleInput.OnInputMode -= ModuleInput_OnInputMode;
|
||||
}
|
||||
|
||||
/// <summary> 输入模式 </summary>
|
||||
protected abstract void ModuleInput_OnInputMode(InputMode mode);
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fccf5d06f2bfe274ca0c36cb9f830a89
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ea1d3ff12fa75374db81a3fa96568dbf
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,21 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
/// <summary>
|
||||
/// 菜单 - 输入
|
||||
/// </summary>
|
||||
public class InputMenu : InputControl {
|
||||
|
||||
protected override void ModuleInput_OnInputMode(InputMode mode) {
|
||||
// throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
#region 输入系统
|
||||
/// <summary> 鼠标右键 </summary>
|
||||
public void OnMouseRight(InputValue inputValue) {
|
||||
UIMenuManager.I.Open();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2c410af27a0301a42af9f1934da770a6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using MuHua;
|
||||
|
||||
/// <summary>
|
||||
/// 输入模块
|
||||
/// </summary>
|
||||
public class ModuleInput : ModuleSingle<ModuleInput> {
|
||||
|
||||
/// <summary> 当前输入模式 </summary>
|
||||
public static InputMode Current;
|
||||
/// <summary> 回退输入模式 </summary>
|
||||
public static InputMode BackMode;
|
||||
/// <summary> 鼠标指针位置 </summary>
|
||||
public static Vector2 mousePosition;
|
||||
/// <summary> 转换模式事件 </summary>
|
||||
public static event Action<InputMode> OnInputMode;
|
||||
|
||||
/// <summary> 指针是否在UI上 </summary>
|
||||
private static bool isPointerOverUIObject;
|
||||
/// <summary> 指针是否在UI上 </summary>
|
||||
public static bool IsPointerOverUIObject => isPointerOverUIObject;
|
||||
|
||||
/// <summary> 设置输入模式 </summary>
|
||||
public static void Settings(InputMode mode) {
|
||||
BackMode = Current;
|
||||
Current = mode;
|
||||
OnInputMode?.Invoke(Current);
|
||||
}
|
||||
/// <summary> 设置输入模式 </summary>
|
||||
public static void Back() {
|
||||
Current = BackMode;
|
||||
OnInputMode?.Invoke(Current);
|
||||
}
|
||||
|
||||
protected override void Awake() => NoReplace();
|
||||
|
||||
private void Update() {
|
||||
#if UNITY_STANDALONE
|
||||
//电脑平台
|
||||
isPointerOverUIObject = EventSystem.current.IsPointerOverGameObject();
|
||||
#elif UNITY_WEBGL
|
||||
//WebGL平台
|
||||
isPointerOverUIObject = EventSystem.current.IsPointerOverGameObject();
|
||||
#elif UNITY_ANDROID
|
||||
//安卓平台
|
||||
isPointerOverUIObject = EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId);
|
||||
#elif UNITY_IOS
|
||||
//苹果平台
|
||||
isPointerOverUIObject = EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 输入模式
|
||||
/// </summary>
|
||||
public enum InputMode {
|
||||
None,// 无
|
||||
|
||||
FashionDesign,// 服装设计
|
||||
|
||||
OrnamentDesign,// 配饰设计
|
||||
|
||||
FashionDisplay,// 服装展示
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 660f596e493d2b547b176b764baa4a7c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,13 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using MuHua;
|
||||
|
||||
/// <summary>
|
||||
/// 测试管理器
|
||||
/// </summary>
|
||||
public class TestManager : ModuleSingle<TestManager> {
|
||||
|
||||
protected override void Awake() => NoReplace();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 48413b9054701704499e7cb2c698ac97
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
using MuHua;
|
||||
|
||||
/// <summary>
|
||||
/// UI菜单管理器
|
||||
/// </summary>
|
||||
public class UIMenuManager : ModuleUISingle<UIMenuManager> {
|
||||
/// <summary> 菜单模板 </summary>
|
||||
public VisualTreeAsset menuTreeAsset;
|
||||
/// <summary> 项目模板 </summary>
|
||||
public VisualTreeAsset itemTreeAsset;
|
||||
|
||||
private UIMenuPanel menu;
|
||||
|
||||
public override VisualElement Element => root.Q<VisualElement>("Menu");
|
||||
|
||||
protected override void Awake() => NoReplace(false);
|
||||
|
||||
public void Open() {
|
||||
if (menu != null) { Close(); }
|
||||
Vector3 mousePosition = UITool.GetMousePosition(Element);
|
||||
menu = BuildMenu(mousePosition);
|
||||
}
|
||||
public void Close() {
|
||||
Element.Clear();
|
||||
}
|
||||
public void Settings() {
|
||||
|
||||
}
|
||||
|
||||
/// <summary> 创建菜单 </summary>
|
||||
public UIMenuPanel BuildMenu(Vector3 position) {
|
||||
VisualElement element = menuTreeAsset.Instantiate();
|
||||
Element.Add(element);
|
||||
element.transform.position = position;
|
||||
return new UIMenuPanel(element, itemTreeAsset);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// UI菜单面板
|
||||
/// </summary>
|
||||
public class UIMenuPanel : ModuleUIPanel {
|
||||
|
||||
public ModuleUIItems<UIItem, DataMenuItem> items;
|
||||
|
||||
public VisualElement Container => Q<VisualElement>("Container");
|
||||
|
||||
public UIMenuPanel(VisualElement element, VisualTreeAsset templateAsset) : base(element) {
|
||||
items = new ModuleUIItems<UIItem, DataMenuItem>(Container, templateAsset,
|
||||
(data, element) => new UIItem(data, element));
|
||||
}
|
||||
public void Release() => items.Release();
|
||||
|
||||
/// <summary> UI项目 </summary>
|
||||
public class UIItem : ModuleUIItem<DataMenuItem> {
|
||||
public UIItem(DataMenuItem value, VisualElement element) : base(value, element) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 菜单项目
|
||||
/// </summary>
|
||||
public class DataMenuItem {
|
||||
/// <summary> 名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 回调 </summary>
|
||||
public Action callback;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 422a458e7229d6b4a8fff66af1840238
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user