mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-26 18:26:23 +00:00
提交
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Plugins.JNGame.Sync.Frame.game;
|
||||
@@ -10,6 +11,15 @@ using UnityEngine.SceneManagement;
|
||||
|
||||
namespace Plugins.JNGame.Sync.Frame
|
||||
{
|
||||
|
||||
//帧同步 通知
|
||||
public interface JNSyncFrameEvent
|
||||
{
|
||||
static string CLEAR = "JNSyncFrameEvent_CLEAR";
|
||||
static string CREATE = "JNSyncFrameEvent_CREATE";
|
||||
static string FRAME = "JNSyncFrameEvent_FRAME";
|
||||
}
|
||||
|
||||
public abstract class JNSyncFrame : SystemBase
|
||||
{
|
||||
|
||||
@@ -35,7 +45,7 @@ namespace Plugins.JNGame.Sync.Frame
|
||||
private Dictionary<int,JNFrameInfo> _nFrameTempQueue = new();
|
||||
|
||||
//需要同步的Actor
|
||||
private List<JNSyncFrameComponent<object>> _nSyncActors = new();
|
||||
private List<IJNSyncFrameComponent> _nSyncActors = new();
|
||||
|
||||
//ID 每添加 JNSyncFrameComponent + 1
|
||||
public Func<int> nSyncID = RandomUtil.Next(0);
|
||||
@@ -61,21 +71,34 @@ namespace Plugins.JNGame.Sync.Frame
|
||||
{
|
||||
Physics.autoSimulation = false;
|
||||
Physics.autoSyncTransforms = false;
|
||||
this.OnReset();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
//开始
|
||||
public void onStart(){
|
||||
public void OnStart(){
|
||||
this._isStart = true;
|
||||
}
|
||||
|
||||
|
||||
//重置数据
|
||||
public void onStop()
|
||||
public void OnReset()
|
||||
{
|
||||
|
||||
EventDispatcher.Event.Dispatch(JNSyncFrameEvent.CLEAR);
|
||||
|
||||
this._isStart = false;
|
||||
this.nSyncID = RandomUtil.Next(0);
|
||||
this.nRandom = RandomUtil.SyncRandom(100);
|
||||
this.nRandomInt = RandomUtil.SyncRandomInt(100);
|
||||
this._nSyncActors = new();
|
||||
this._nFrameQueue = new();
|
||||
this._nFrameTempQueue = new();
|
||||
this._nLocalFrame = 0;
|
||||
this._nFrameRun = 0;
|
||||
|
||||
Physics.SyncTransforms();
|
||||
EventDispatcher.Event.Dispatch(JNSyncFrameEvent.CREATE);
|
||||
|
||||
}
|
||||
|
||||
//更新同步
|
||||
@@ -122,13 +145,15 @@ namespace Plugins.JNGame.Sync.Frame
|
||||
//更新帧
|
||||
this._nSyncActors.ForEach(child =>
|
||||
{
|
||||
MethodInfo OnSyncUpdate = child.GetType().GetMethod("OnSyncUpdate");
|
||||
MethodInfo Decoder = child.GetType().GetMethod("Decoder");
|
||||
if (inputs.ContainsKey(child.NID))
|
||||
{
|
||||
child.OnSyncUpdate(dt,frame,child.Decoder(inputs[child.NID].Input.ToByteArray()));
|
||||
OnSyncUpdate.Invoke(child,new []{dt,frame,Decoder.Invoke(child,new object[]{ inputs[child.NID].Input.ToByteArray() })});
|
||||
}
|
||||
else
|
||||
{
|
||||
child.OnSyncUpdate(dt,frame,null);
|
||||
OnSyncUpdate.Invoke(child,new []{ dt,frame,(object)null });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -177,8 +202,8 @@ namespace Plugins.JNGame.Sync.Frame
|
||||
if(isLatestData){
|
||||
//如果推的帧小于本地帧 则 重开
|
||||
if(frame.Index < _nLocalFrame){
|
||||
onStop();
|
||||
onStart();
|
||||
OnReset();
|
||||
OnStart();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -236,11 +261,22 @@ namespace Plugins.JNGame.Sync.Frame
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//添加同步组件
|
||||
public void AddSyncActor(IJNSyncFrameComponent sync){
|
||||
if(!this._nSyncActors.Contains(sync)){
|
||||
this._nSyncActors.Add(sync);
|
||||
}
|
||||
}
|
||||
|
||||
//销毁同步组件
|
||||
public void DelSyncActor(IJNSyncFrameComponent sync){
|
||||
this._nSyncActors.Remove(sync);
|
||||
}
|
||||
|
||||
//发送帧数据
|
||||
protected abstract void OnSendInput(JNFrameInputs inputs);
|
||||
//获取帧数据
|
||||
protected abstract UniTask<JNFrameInfos> OnServerData(int start,int end);
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,17 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Plugins.JNGame.Sync.Frame.game
|
||||
{
|
||||
public abstract class IJNSyncFrameComponent : MonoBehaviour
|
||||
{
|
||||
//标识
|
||||
[HideInInspector]
|
||||
public int _nId;
|
||||
[HideInInspector]
|
||||
public int NID => _nId;
|
||||
|
||||
//获取同步类
|
||||
protected abstract JNSyncFrame GetSync();
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fdc20d5f68c44f11ba0f08c304cb5fae
|
||||
timeCreated: 1706518761
|
@@ -7,12 +7,8 @@ namespace Plugins.JNGame.Sync.Frame.game
|
||||
{
|
||||
|
||||
//所有帧同步组件的基类
|
||||
public abstract class JNSyncFrameComponent<T> : MonoBehaviour
|
||||
public abstract class JNSyncFrameComponent<T> : IJNSyncFrameComponent
|
||||
{
|
||||
|
||||
//标识
|
||||
private int _nId;
|
||||
public int NID => _nId;
|
||||
|
||||
//当前输入
|
||||
private T _input;
|
||||
@@ -21,31 +17,28 @@ namespace Plugins.JNGame.Sync.Frame.game
|
||||
public Boolean isInput => this._input == null;
|
||||
|
||||
//是否初始化完成
|
||||
[HideInInspector]
|
||||
public Boolean isSyncInitSuccess = false;
|
||||
|
||||
|
||||
//清空输入
|
||||
public void ClearInput(){
|
||||
this._input = default(T);
|
||||
}
|
||||
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
//向帧同步获取Id
|
||||
this._nId = GetSync().nSyncID();
|
||||
this._nId = this.GetSync().nSyncID();
|
||||
GetSync().AddSyncActor(this);
|
||||
this.OnSyncLoad();
|
||||
}
|
||||
|
||||
//初始化完成
|
||||
public void OnSyncInitSuccess(){}
|
||||
|
||||
//获取同步类
|
||||
protected abstract JNSyncFrame GetSync();
|
||||
|
||||
//加载
|
||||
public abstract void OnSyncLoad();
|
||||
|
||||
|
||||
//解析
|
||||
public T Decoder(byte[] bytes)
|
||||
{
|
||||
@@ -57,7 +50,6 @@ namespace Plugins.JNGame.Sync.Frame.game
|
||||
return Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(input));
|
||||
}
|
||||
|
||||
|
||||
//帧同步
|
||||
public abstract void OnSyncUpdate(int dt,JNFrameInfo frame,T input);
|
||||
|
||||
|
@@ -9,6 +9,9 @@ namespace Plugins.JNGame.Util
|
||||
/// </summary>
|
||||
public class EventDispatcher
|
||||
{
|
||||
|
||||
public static readonly EventDispatcher Event = new EventDispatcher();
|
||||
|
||||
public Dictionary<string, List<Delegate>> EventHandlers { get; private set; } = new();
|
||||
|
||||
/// <summary>
|
||||
@@ -16,7 +19,7 @@ namespace Plugins.JNGame.Util
|
||||
/// </summary>
|
||||
/// <param name="eventId">事件标识符</param>
|
||||
/// <param name="listener">事件监听器</param>
|
||||
public void AddListener(string eventId, Delegate listener)
|
||||
public void AddListener(string eventId, Action listener)
|
||||
{
|
||||
if (!EventHandlers.ContainsKey(eventId))
|
||||
{
|
||||
@@ -81,6 +84,21 @@ namespace Plugins.JNGame.Util
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispatch(string eventId)
|
||||
{
|
||||
if (EventHandlers.ContainsKey(eventId) && EventHandlers[eventId] != null)
|
||||
{
|
||||
foreach(Delegate fun in EventHandlers[eventId])
|
||||
{
|
||||
// 确保 fun 实际上是指向一个 Action<T> 类型的函数
|
||||
if (fun.Method.GetParameters().Length == 0)
|
||||
{
|
||||
((Action)fun)();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
EventHandlers = new();
|
||||
|
8
JNFrame/Assets/Resources/Prefab.meta
Normal file
8
JNFrame/Assets/Resources/Prefab.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0e38b6117e2ea924f96539a58c4b037d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
JNFrame/Assets/Resources/Prefab/Mode.meta
Normal file
8
JNFrame/Assets/Resources/Prefab/Mode.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 71c96a96bb863694faba7104a9d9322b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
JNFrame/Assets/Resources/Prefab/Mode/WorldSceneMode.meta
Normal file
8
JNFrame/Assets/Resources/Prefab/Mode/WorldSceneMode.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e6354fa04e40f004095046b8fbe4c921
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@@ -0,0 +1,116 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &664841175096201695
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 664841175096201691}
|
||||
- component: {fileID: 664841175096201690}
|
||||
- component: {fileID: 664841175096201689}
|
||||
- component: {fileID: 664841175096201688}
|
||||
- component: {fileID: 664841175096201684}
|
||||
m_Layer: 0
|
||||
m_Name: Sphere
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &664841175096201691
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 664841175096201695}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 6.03, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &664841175096201690
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 664841175096201695}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &664841175096201689
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 664841175096201695}
|
||||
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: 10303, guid: 0000000000000000f000000000000000, type: 0}
|
||||
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!135 &664841175096201688
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 664841175096201695}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!54 &664841175096201684
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 664841175096201695}
|
||||
serializedVersion: 2
|
||||
m_Mass: 1
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_UseGravity: 1
|
||||
m_IsKinematic: 0
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 096d89120db3de0499fda98eddf7e04f
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
JNFrame/Assets/Scenes/Mode.meta
Normal file
8
JNFrame/Assets/Scenes/Mode.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7e4bbf503f03cf649bc465775f6572db
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@@ -123,6 +123,234 @@ NavMeshSettings:
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &367831855
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 367831860}
|
||||
- component: {fileID: 367831859}
|
||||
- component: {fileID: 367831858}
|
||||
- component: {fileID: 367831857}
|
||||
- component: {fileID: 367831856}
|
||||
m_Layer: 0
|
||||
m_Name: Cube (4)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!54 &367831856
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 367831855}
|
||||
serializedVersion: 2
|
||||
m_Mass: 0.5
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_UseGravity: 0
|
||||
m_IsKinematic: 1
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!65 &367831857
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 367831855}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &367831858
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 367831855}
|
||||
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: 10303, guid: 0000000000000000f000000000000000, type: 0}
|
||||
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 &367831859
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 367831855}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &367831860
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 367831855}
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 3.58, y: 2.2, z: 13.21}
|
||||
m_LocalScale: {x: 1, y: 5, z: 50}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 7
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
|
||||
--- !u!1 &964960249
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 964960254}
|
||||
- component: {fileID: 964960253}
|
||||
- component: {fileID: 964960252}
|
||||
- component: {fileID: 964960251}
|
||||
- component: {fileID: 964960250}
|
||||
m_Layer: 0
|
||||
m_Name: Cube (1)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!54 &964960250
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 964960249}
|
||||
serializedVersion: 2
|
||||
m_Mass: 0.5
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_UseGravity: 0
|
||||
m_IsKinematic: 1
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!65 &964960251
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 964960249}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &964960252
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 964960249}
|
||||
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: 10303, guid: 0000000000000000f000000000000000, type: 0}
|
||||
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 &964960253
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 964960249}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &964960254
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 964960249}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -12.28, y: 2.2, z: 0}
|
||||
m_LocalScale: {x: 1, y: 5, z: 50}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1169397908
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -190,14 +418,128 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1169397908}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||
m_LocalRotation: {x: 0.29197416, y: -0.63795906, z: 0.28661197, w: 0.6523902}
|
||||
m_LocalPosition: {x: 18.290829, y: 15.245832, z: -3.1746101}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1282436099
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1282436104}
|
||||
- component: {fileID: 1282436103}
|
||||
- component: {fileID: 1282436102}
|
||||
- component: {fileID: 1282436101}
|
||||
- component: {fileID: 1282436100}
|
||||
m_Layer: 0
|
||||
m_Name: Cube (3)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!54 &1282436100
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1282436099}
|
||||
serializedVersion: 2
|
||||
m_Mass: 0.5
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_UseGravity: 0
|
||||
m_IsKinematic: 1
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!65 &1282436101
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1282436099}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1282436102
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1282436099}
|
||||
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: 10303, guid: 0000000000000000f000000000000000, type: 0}
|
||||
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 &1282436103
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1282436099}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &1282436104
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1282436099}
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 3.58, y: 2.2, z: -15}
|
||||
m_LocalScale: {x: 1, y: 5, z: 50}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 6
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
|
||||
--- !u!1 &1347472972
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -415,6 +757,7 @@ GameObject:
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1538924697}
|
||||
- component: {fileID: 1538924698}
|
||||
m_Layer: 0
|
||||
m_Name: GMode
|
||||
m_TagString: Untagged
|
||||
@@ -437,7 +780,22 @@ Transform:
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1874648403
|
||||
--- !u!114 &1538924698
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1538924695}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e57d6502487241f9826136613eff59a2, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_nId: 0
|
||||
isSyncInitSuccess: 0
|
||||
ball: {fileID: 664841175096201695, guid: 096d89120db3de0499fda98eddf7e04f, type: 3}
|
||||
--- !u!1 &2060155880
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -445,38 +803,54 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1874648407}
|
||||
- component: {fileID: 1874648406}
|
||||
- component: {fileID: 1874648405}
|
||||
- component: {fileID: 1874648404}
|
||||
- component: {fileID: 1874648408}
|
||||
- component: {fileID: 2060155885}
|
||||
- component: {fileID: 2060155884}
|
||||
- component: {fileID: 2060155883}
|
||||
- component: {fileID: 2060155882}
|
||||
- component: {fileID: 2060155881}
|
||||
m_Layer: 0
|
||||
m_Name: Sphere
|
||||
m_Name: Cube (2)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!135 &1874648404
|
||||
SphereCollider:
|
||||
--- !u!54 &2060155881
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1874648403}
|
||||
m_GameObject: {fileID: 2060155880}
|
||||
serializedVersion: 2
|
||||
m_Mass: 0.5
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_UseGravity: 0
|
||||
m_IsKinematic: 1
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!65 &2060155882
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2060155880}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1874648405
|
||||
--- !u!23 &2060155883
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1874648403}
|
||||
m_GameObject: {fileID: 2060155880}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
@@ -512,42 +886,26 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &1874648406
|
||||
--- !u!33 &2060155884
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1874648403}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &1874648407
|
||||
m_GameObject: {fileID: 2060155880}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &2060155885
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1874648403}
|
||||
m_GameObject: {fileID: 2060155880}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 6.03, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_LocalPosition: {x: 14.19, y: 2.2, z: 0}
|
||||
m_LocalScale: {x: 1, y: 5, z: 50}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 4
|
||||
m_RootOrder: 5
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!54 &1874648408
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1874648403}
|
||||
serializedVersion: 2
|
||||
m_Mass: 1
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_UseGravity: 1
|
||||
m_IsKinematic: 0
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
@@ -579,7 +579,19 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 2008468466}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 1911778721}
|
||||
m_TargetAssemblyTypeName: Script.UIMain, Assembly-CSharp
|
||||
m_MethodName: OnClickReset
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
--- !u!114 &2008468466
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@@ -7,9 +7,10 @@ namespace Script
|
||||
public static class App
|
||||
{
|
||||
|
||||
public static JNGSocket Socket = new JNGSocket();
|
||||
public static JNGSyncFrame Sync = new JNGSyncFrame();
|
||||
public static JAPI Api = new(new JAPIConfig(){BaseURL = "http://localhost:8080"});
|
||||
public static readonly JNGSocket Socket = new JNGSocket();
|
||||
public static readonly JNGSyncFrame Sync = new JNGSyncFrame();
|
||||
public static readonly JAPI Api = new(new JAPIConfig(){BaseURL = "http://localhost:8080"});
|
||||
public static readonly EventDispatcher Event = EventDispatcher.Event;
|
||||
|
||||
public static SystemBase[] System()
|
||||
{
|
||||
|
3
JNFrame/Assets/Script/AppImpl/Sync.meta
Normal file
3
JNFrame/Assets/Script/AppImpl/Sync.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 18f844bda03d4d0c8dae20659066ca67
|
||||
timeCreated: 1706519193
|
16
JNFrame/Assets/Script/AppImpl/Sync/JNGSyncFrame.cs
Normal file
16
JNFrame/Assets/Script/AppImpl/Sync/JNGSyncFrame.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using Plugins.JNGame.Sync.Frame;
|
||||
using Plugins.JNGame.Sync.Frame.game;
|
||||
|
||||
namespace Script.AppImpl.Sync
|
||||
{
|
||||
public abstract class JNGSyncFrame<T> : JNSyncFrameComponent<T>
|
||||
{
|
||||
protected override JNSyncFrame GetSync()
|
||||
{
|
||||
return App.Sync;
|
||||
}
|
||||
|
||||
public override void OnSyncLoad(){}
|
||||
|
||||
}
|
||||
}
|
3
JNFrame/Assets/Script/AppImpl/Sync/JNGSyncFrame.cs.meta
Normal file
3
JNFrame/Assets/Script/AppImpl/Sync/JNGSyncFrame.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 54720b15a706406c974db4ac581e6dbc
|
||||
timeCreated: 1706519239
|
@@ -52,9 +52,7 @@ namespace Script
|
||||
|
||||
private void Update()
|
||||
{
|
||||
|
||||
App.Sync.Update((int)(Time.deltaTime * 1000));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,17 @@
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Script.battle;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Script
|
||||
{
|
||||
public class UIMain : MonoBehaviour
|
||||
{
|
||||
|
||||
//重置
|
||||
public void OnClickReset()
|
||||
{
|
||||
GBattleModeManager.Instance.Open(GBattleMode.Default).Forget();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,8 @@
|
||||
namespace Script.battle
|
||||
using Script.AppImpl.Sync;
|
||||
|
||||
namespace Script.battle
|
||||
{
|
||||
public class GBaseMode
|
||||
public abstract class GBaseMode<T> : JNGSyncFrame<T>
|
||||
{
|
||||
|
||||
}
|
||||
|
@@ -1,5 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Plugins.JNGame.Sync.Frame;
|
||||
using Plugins.JNGame.Util;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
@@ -22,8 +24,8 @@ namespace Script.battle
|
||||
//全局战斗模式管理器
|
||||
public class GBattleModeManager : SingletonScene<GBattleModeManager>
|
||||
{
|
||||
|
||||
public static string[] Worlds = { "WorldScene" };
|
||||
|
||||
private static readonly string[] Worlds = { "WorldSceneMode" };
|
||||
|
||||
//当前模式
|
||||
private GBattleMode _current = GBattleMode.Not;
|
||||
@@ -32,6 +34,9 @@ namespace Script.battle
|
||||
public void Init(GBattleModeInfo info)
|
||||
{
|
||||
|
||||
// App.Event.AddListener(JNSyncFrameEvent.CREATE,LoadScene);
|
||||
// App.Event.AddListener(JNSyncFrameEvent.CLEAR,UnloadScene);
|
||||
|
||||
}
|
||||
|
||||
//打开指定模式
|
||||
@@ -39,22 +44,20 @@ namespace Script.battle
|
||||
{
|
||||
|
||||
//销毁之前模式
|
||||
await Close();
|
||||
_current = mode;
|
||||
await LoadScene(mode);
|
||||
await OnReset();
|
||||
//开始同步
|
||||
App.Sync.onStart();
|
||||
App.Sync.OnStart();
|
||||
|
||||
}
|
||||
|
||||
//关闭当前模式
|
||||
public async UniTask Close()
|
||||
//重置当前模式
|
||||
public async UniTask OnReset()
|
||||
{
|
||||
|
||||
await UnloadScene(_current);
|
||||
App.Sync.onStop();
|
||||
await this.UnloadScene();
|
||||
App.Sync.OnReset();
|
||||
await this.LoadScene();
|
||||
_current = GBattleMode.Not;
|
||||
|
||||
}
|
||||
|
||||
//获取场景名称
|
||||
@@ -64,20 +67,30 @@ namespace Script.battle
|
||||
}
|
||||
|
||||
//加载场景
|
||||
private async UniTask LoadScene(GBattleMode mode)
|
||||
private async UniTask LoadScene()
|
||||
{
|
||||
GBattleMode mode = this._current;
|
||||
if (mode == GBattleMode.Not) return;
|
||||
Debug.Log($"[GBattleModeManager] 打开场景{GetWorldName(mode)}");
|
||||
await SceneManager.LoadSceneAsync(GetWorldName(mode), LoadSceneMode.Additive);
|
||||
}
|
||||
|
||||
//销毁场景
|
||||
private async UniTask UnloadScene(GBattleMode mode)
|
||||
//销毁所有场景
|
||||
private async UniTask UnloadScene()
|
||||
{
|
||||
|
||||
if (mode == GBattleMode.Not) return;
|
||||
Debug.Log($"[GBattleModeManager] 关闭场景{GetWorldName(mode)}");
|
||||
await SceneManager.UnloadSceneAsync(GetWorldName(mode));
|
||||
|
||||
Debug.Log($"[GBattleModeManager] 关闭场景");
|
||||
foreach (var world in Worlds)
|
||||
{
|
||||
try
|
||||
{
|
||||
await SceneManager.UnloadSceneAsync(world);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignored
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
3
JNFrame/Assets/Script/battle/mode.meta
Normal file
3
JNFrame/Assets/Script/battle/mode.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6b22dd710734444690a739bc582997fa
|
||||
timeCreated: 1706519323
|
32
JNFrame/Assets/Script/battle/mode/GWorldSceneMode.cs
Normal file
32
JNFrame/Assets/Script/battle/mode/GWorldSceneMode.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Script.battle.mode
|
||||
{
|
||||
public class GWorldSceneModeInput
|
||||
{
|
||||
|
||||
}
|
||||
public class GWorldSceneMode:GBaseMode<GWorldSceneModeInput>
|
||||
{
|
||||
|
||||
public GameObject ball;
|
||||
|
||||
// public override void OnSyncLoad()
|
||||
// {
|
||||
// base.OnSyncLoad();
|
||||
// Instantiate(ball,this.transform);
|
||||
// }
|
||||
|
||||
public override void OnSyncUpdate(int dt, JNFrameInfo frame, GWorldSceneModeInput input)
|
||||
{
|
||||
if (frame.Index > 0)
|
||||
{
|
||||
var ballNode = Instantiate(ball,this.transform);
|
||||
var transformPosition = ballNode.transform.position;
|
||||
ballNode.transform.position = new Vector3(transformPosition.x,transformPosition.y,GetSync().nRandomInt(-3,3));
|
||||
}
|
||||
Debug.Log("OnSyncUpdate");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e57d6502487241f9826136613eff59a2
|
||||
timeCreated: 1706519435
|
Reference in New Issue
Block a user