1
This commit is contained in:
@@ -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:
|
||||
Reference in New Issue
Block a user