diff --git a/JNFrame2/AimingRig.csproj b/JNFrame2/AimingRig.csproj
index ed44c4f3..ec4db832 100644
--- a/JNFrame2/AimingRig.csproj
+++ b/JNFrame2/AimingRig.csproj
@@ -806,12 +806,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
diff --git a/JNFrame2/Assembly-CSharp.csproj b/JNFrame2/Assembly-CSharp.csproj
index 9c8715e1..d2c386ef 100644
--- a/JNFrame2/Assembly-CSharp.csproj
+++ b/JNFrame2/Assembly-CSharp.csproj
@@ -159,7 +159,7 @@
-
+
@@ -181,7 +181,7 @@
-
+
@@ -332,7 +332,7 @@
-
+
@@ -376,7 +376,7 @@
-
+
@@ -430,7 +430,7 @@
-
+
@@ -582,7 +582,7 @@
-
+
@@ -703,6 +703,7 @@
+
diff --git a/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/JNTileEntity.cs b/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/JNTileEntity.cs
index a9484344..628694dc 100644
--- a/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/JNTileEntity.cs
+++ b/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/JNTileEntity.cs
@@ -1,4 +1,5 @@
using JNGame.Sync.Entity;
+using JNGame.Sync.Frame.Entity;
using JNGame.Sync.Frame.Entity.Components;
using JNGame.Sync.State.Tile.Entity.Component;
using JNGame.Sync.System.Data;
@@ -86,8 +87,27 @@ namespace JNGame.Sync.State.Tile.Entity
public abstract void TileSyncData(ISTileData data);
+ public override void OnInit(IJNContext context, ulong id = 0)
+ {
+ base.OnInit(context, id);
+
+ //如果不是Tile系统则直接拥有权限
+ if (Context.GetSync() is not JNSSTileServerService)
+ {
+ IsHost = true;
+ IsSelfCreate = true;
+ }
+ }
+
public virtual void HostUpdate()
{
+
+ //如果不是Tile系统则直接返回
+ if (Context.GetSync() is not JNSSTileServerService)
+ {
+ return;
+ }
+
bool isContains = SyncTile.IsContains(Position);
bool isHost = IsHost;
diff --git a/JNFrame2/Assets/JNGame/Sync/Entity/JNEntity.cs b/JNFrame2/Assets/JNGame/Sync/Entity/JNEntity.cs
index 21886146..303cb636 100644
--- a/JNFrame2/Assets/JNGame/Sync/Entity/JNEntity.cs
+++ b/JNFrame2/Assets/JNGame/Sync/Entity/JNEntity.cs
@@ -50,7 +50,7 @@ namespace JNGame.Sync.Entity
///
public LVector3 Position => Transform.Position;
- public void OnInit(IJNContext context,ulong id = 0)
+ public virtual void OnInit(IJNContext context,ulong id = 0)
{
Context = context;
_id = id;
diff --git a/JNFrame2/Assets/JNGame/Sync/System/Data/SStateDataSystem.cs b/JNFrame2/Assets/JNGame/Sync/System/Data/SStateDataSystem.cs
index 4b54bade..3853aa96 100644
--- a/JNFrame2/Assets/JNGame/Sync/System/Data/SStateDataSystem.cs
+++ b/JNFrame2/Assets/JNGame/Sync/System/Data/SStateDataSystem.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
using DotRecast.Core.Collections;
using UnityEngine;
using NotImplementedException = System.NotImplementedException;
@@ -6,6 +7,16 @@ using NotImplementedException = System.NotImplementedException;
namespace JNGame.Sync.System.Data
{
+ public static class SDByteOperate
+ {
+ public static readonly byte[] Delete = { 0 }; //删除
+
+ public static bool IsDelete(byte[] value)
+ {
+ return value.Length == 1 && value[0] == Delete[0];
+ }
+ }
+
public enum SStateDataEnum
{
Server,
@@ -57,7 +68,7 @@ namespace JNGame.Sync.System.Data
///
/// 状态同步的数据系统 (支持网络数据)
- /// 注意:帧同步也可以使用不过不建议 因为会有额外开销 除非你的游戏 经常在帧同步或者状态同步之间切换
+ /// 注意:帧同步也可以使用不过不建议 因为会有额外开销 除非你的游戏 经常在帧同步或者状态同步之间切换 如果你要在帧同步系统中使用 则使用 ServerClient类型
///
public abstract class SStateDataSystem : SDataSystem,ISStateDataSystem where T : ISStateData,new()
{
@@ -79,10 +90,10 @@ namespace JNGame.Sync.System.Data
{
Type = type;
}
-
-
+
public override void OnSyncUpdate(int dt)
{
+
while (WaitUBytes.Count > 0)
{
OnUByteUpdate(WaitUBytes.Dequeue());
@@ -241,7 +252,7 @@ namespace JNGame.Sync.System.Data
///
public virtual void Delete(ulong id)
{
- UBytes[id] = SDByteOperate.DELETE;
+ UBytes[id] = SDByteOperate.Delete;
}
}
diff --git a/JNFrame2/Assets/JNGame/Sync/System/Data/STileDataSystem.cs b/JNFrame2/Assets/JNGame/Sync/System/Data/STileDataSystem.cs
index 749e7e12..a9fb9a32 100644
--- a/JNFrame2/Assets/JNGame/Sync/System/Data/STileDataSystem.cs
+++ b/JNFrame2/Assets/JNGame/Sync/System/Data/STileDataSystem.cs
@@ -76,7 +76,6 @@ namespace JNGame.Sync.System.Data
public JNSSTileServerService TileSync => Sync as JNSSTileServerService;
public bool IsMaster => TileSync is not null && TileSync.IsMaster;
public bool IsSlave => TileSync is not null && TileSync.IsSlave;
-
protected STileDataSystem(SStateDataEnum type) : base(type)
{
@@ -113,6 +112,14 @@ namespace JNGame.Sync.System.Data
public override void OnSyncUpdate(int dt)
{
+
+ //如果不是Tile系统直接调用base
+ if (Sync is not JNSSTileServerService)
+ {
+ base.OnSyncUpdate(dt);
+ return;
+ }
+
while (WaitUBytes.Count > 0)
{
OnUByteUpdate(WaitUBytes.Dequeue());
diff --git a/JNFrame2/Assets/JNGame/Sync/System/SDataSystem.cs b/JNFrame2/Assets/JNGame/Sync/System/SDataSystem.cs
index c1b3c148..479a1885 100644
--- a/JNFrame2/Assets/JNGame/Sync/System/SDataSystem.cs
+++ b/JNFrame2/Assets/JNGame/Sync/System/SDataSystem.cs
@@ -1,23 +1,11 @@
using System.Collections.Concurrent;
-using System.Collections.Generic;
using System.Linq;
-using DotRecast.Core.Collections;
using JNGame.Sync.Frame.Service;
using NotImplementedException = System.NotImplementedException;
namespace JNGame.Sync.System
{
- public class SDByteOperate
- {
- public static readonly byte[] DELETE = { 0 }; //删除
-
- public static bool IsDelete(byte[] value)
- {
- return value.Length == 1 && value[0] == DELETE[0];
- }
- }
-
///
/// 数据接口
///
@@ -76,7 +64,7 @@ namespace JNGame.Sync.System
}
///
- /// 返回最新数据 (收集最新的ISData数据 正常来讲只有服务端会运行)
+ /// 返回最新数据 (收集最新的ISData数据)
///
public virtual ConcurrentDictionary GetLatest()
{
diff --git a/JNFrame2/Assets/JNGame/Sync/View/ViewData.cs b/JNFrame2/Assets/JNGame/Sync/View/ViewData.cs
index fa9067d5..3aa162e5 100644
--- a/JNFrame2/Assets/JNGame/Sync/View/ViewData.cs
+++ b/JNFrame2/Assets/JNGame/Sync/View/ViewData.cs
@@ -17,7 +17,7 @@ namespace JNGame.Sync.View
public abstract class ViewData : IViewData where T : ISData
{
- private Dictionary views = new();
+ protected Dictionary views = new();
private SViewSystem root;
public SViewSystem Root => root;
diff --git a/JNFrame2/Assets/JNGame/Util/EventDispatcher.cs b/JNFrame2/Assets/JNGame/Util/EventDispatcher.cs
index 9d6c485e..c39dbbbd 100644
--- a/JNFrame2/Assets/JNGame/Util/EventDispatcher.cs
+++ b/JNFrame2/Assets/JNGame/Util/EventDispatcher.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using JNGame.Util;
using UnityEngine;
namespace Plugins.JNGame.Util
@@ -107,6 +108,30 @@ namespace Plugins.JNGame.Util
}
}
}
+
+ ///
+ /// 主线程分发事件 [禁止帧同步中使用主线分发事件]
+ ///
+ public void TryMainDispatch(string eventId, T args)
+ {
+ UnityMainThreadDispatcher.Instance.Enqueue(() =>
+ {
+ try
+ {
+ Dispatch(eventId,args);
+ }catch(Exception e){Debug.LogError(e.Message);}
+ });
+ }
+ public void TryMainDispatch(string eventId)
+ {
+ UnityMainThreadDispatcher.Instance.Enqueue(() =>
+ {
+ try
+ {
+ Dispatch(eventId);
+ }catch(Exception e){Debug.LogError(e.Message);}
+ });
+ }
public void Reset()
{
diff --git a/JNFrame2/Assets/Scripts/Game/Data/State.meta b/JNFrame2/Assets/Scripts/Game/Data/State.meta
new file mode 100644
index 00000000..2bccc630
--- /dev/null
+++ b/JNFrame2/Assets/Scripts/Game/Data/State.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: cecc61f462364f198db69cf70c6c557d
+timeCreated: 1726941153
\ No newline at end of file
diff --git a/JNFrame2/Assets/Scripts/Game/Data/DStateBasisData.cs b/JNFrame2/Assets/Scripts/Game/Data/State/DStateBasisData.cs
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/DStateBasisData.cs
rename to JNFrame2/Assets/Scripts/Game/Data/State/DStateBasisData.cs
diff --git a/JNFrame2/Assets/Scripts/Game/Data/DStateBasisData.cs.meta b/JNFrame2/Assets/Scripts/Game/Data/State/DStateBasisData.cs.meta
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/DStateBasisData.cs.meta
rename to JNFrame2/Assets/Scripts/Game/Data/State/DStateBasisData.cs.meta
diff --git a/JNFrame2/Assets/Scripts/Game/Data/EDBossDataSystem.cs b/JNFrame2/Assets/Scripts/Game/Data/State/EDBossDataSystem.cs
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/EDBossDataSystem.cs
rename to JNFrame2/Assets/Scripts/Game/Data/State/EDBossDataSystem.cs
diff --git a/JNFrame2/Assets/Scripts/Game/Data/EDBossDataSystem.cs.meta b/JNFrame2/Assets/Scripts/Game/Data/State/EDBossDataSystem.cs.meta
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/EDBossDataSystem.cs.meta
rename to JNFrame2/Assets/Scripts/Game/Data/State/EDBossDataSystem.cs.meta
diff --git a/JNFrame2/Assets/Scripts/Game/Data/EDNodeDataSystem.cs b/JNFrame2/Assets/Scripts/Game/Data/State/EDNodeDataSystem.cs
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/EDNodeDataSystem.cs
rename to JNFrame2/Assets/Scripts/Game/Data/State/EDNodeDataSystem.cs
diff --git a/JNFrame2/Assets/Scripts/Game/Data/EDNodeDataSystem.cs.meta b/JNFrame2/Assets/Scripts/Game/Data/State/EDNodeDataSystem.cs.meta
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/EDNodeDataSystem.cs.meta
rename to JNFrame2/Assets/Scripts/Game/Data/State/EDNodeDataSystem.cs.meta
diff --git a/JNFrame2/Assets/Scripts/Game/Data/EDPlayerDataSystem.cs b/JNFrame2/Assets/Scripts/Game/Data/State/EDPlayerDataSystem.cs
similarity index 88%
rename from JNFrame2/Assets/Scripts/Game/Data/EDPlayerDataSystem.cs
rename to JNFrame2/Assets/Scripts/Game/Data/State/EDPlayerDataSystem.cs
index d4fadd49..9f10b008 100644
--- a/JNFrame2/Assets/Scripts/Game/Data/EDPlayerDataSystem.cs
+++ b/JNFrame2/Assets/Scripts/Game/Data/State/EDPlayerDataSystem.cs
@@ -10,6 +10,10 @@ using JNGame.Sync.System.Data;
namespace Game.JNGState.Logic.Data
{
+ public enum EDPlayerValueCode : int
+ {
+ Auth = 201
+ }
[Serializable]
public class EDPlayerValue : GDataValue
@@ -46,7 +50,11 @@ namespace Game.JNGState.Logic.Data
public override void UData(EDPlayerValue data)
{
base.UData(data);
- if (data.Auth is not null) Value.Auth = data.Auth;
+ if (data.Auth is not null)
+ {
+ Value.Auth = data.Auth;
+ WriteUpdate((int)EDPlayerValueCode.Auth);
+ }
}
}
diff --git a/JNFrame2/Assets/Scripts/Game/Data/EDPlayerDataSystem.cs.meta b/JNFrame2/Assets/Scripts/Game/Data/State/EDPlayerDataSystem.cs.meta
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/EDPlayerDataSystem.cs.meta
rename to JNFrame2/Assets/Scripts/Game/Data/State/EDPlayerDataSystem.cs.meta
diff --git a/JNFrame2/Assets/Scripts/Game/Data/GDataBaseSystem.cs b/JNFrame2/Assets/Scripts/Game/Data/State/GDataBaseSystem.cs
similarity index 85%
rename from JNFrame2/Assets/Scripts/Game/Data/GDataBaseSystem.cs
rename to JNFrame2/Assets/Scripts/Game/Data/State/GDataBaseSystem.cs
index 91ebbc14..029726c2 100644
--- a/JNFrame2/Assets/Scripts/Game/Data/GDataBaseSystem.cs
+++ b/JNFrame2/Assets/Scripts/Game/Data/State/GDataBaseSystem.cs
@@ -9,17 +9,41 @@ using JNGame.Sync.System;
using JNGame.Sync.System.Data;
using Plugins.JNGame.Network.Action;
using Plugins.JNGame.Util;
+using TouchSocket.Core;
namespace Game.JNGState.Logic.Data
{
+ public enum GDataValueCode : int
+ {
+ Position = 101
+ }
+
[Serializable]
public class GDataValue
{
public DValuePosition Position = null;
}
+
+ public abstract class IGDataBase : ISTileData
+ {
+
+ //计入修改
+ public readonly ConcurrentList WriteCodes = new();
+
+ ///
+ /// 计入修改
+ ///
+ ///
+ public void WriteUpdate(int code)
+ {
+ if (WriteCodes.Contains(code)) return;
+ WriteCodes.Add(code);
+ }
+
+ }
- public class GDataBase : ISTileData where Self : GDataBase where T : GDataValue,new() where N : JNTileEntity
+ public class GDataBase : IGDataBase where Self : GDataBase where T : GDataValue,new() where N : JNTileEntity
{
public readonly T Value = new ();
@@ -93,7 +117,11 @@ namespace Game.JNGState.Logic.Data
///
public virtual void UData(T data)
{
- if (data.Position is not null) Value.Position = data.Position;
+ if (data.Position is not null)
+ {
+ Value.Position = data.Position;
+ WriteUpdate((int)GDataValueCode.Position);
+ }
}
public override LVector3 GetDataPosition()
diff --git a/JNFrame2/Assets/Scripts/Game/Data/GDataBaseSystem.cs.meta b/JNFrame2/Assets/Scripts/Game/Data/State/GDataBaseSystem.cs.meta
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/GDataBaseSystem.cs.meta
rename to JNFrame2/Assets/Scripts/Game/Data/State/GDataBaseSystem.cs.meta
diff --git a/JNFrame2/Assets/Scripts/Game/Data/NetDataEnum.cs b/JNFrame2/Assets/Scripts/Game/Data/State/NetDataEnum.cs
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/NetDataEnum.cs
rename to JNFrame2/Assets/Scripts/Game/Data/State/NetDataEnum.cs
diff --git a/JNFrame2/Assets/Scripts/Game/Data/NetDataEnum.cs.meta b/JNFrame2/Assets/Scripts/Game/Data/State/NetDataEnum.cs.meta
similarity index 100%
rename from JNFrame2/Assets/Scripts/Game/Data/NetDataEnum.cs.meta
rename to JNFrame2/Assets/Scripts/Game/Data/State/NetDataEnum.cs.meta
diff --git a/JNFrame2/Assets/Scripts/Game/View/Entity/VDBoss.cs b/JNFrame2/Assets/Scripts/Game/View/Entity/VDBoss.cs
index a17b7fa7..8385a491 100644
--- a/JNFrame2/Assets/Scripts/Game/View/Entity/VDBoss.cs
+++ b/JNFrame2/Assets/Scripts/Game/View/Entity/VDBoss.cs
@@ -12,29 +12,30 @@ using UnityEngine;
namespace Game.JNGFrame.View.Entity
{
- public class VDBoss : ViewData
+ public class VDBoss : VDEntityBasis
{
public GameObject VWorld => App.Resource.VWorld;
public GameObject Boss => App.Resource.Boss;
public VDBoss(SViewSystem root) : base(root)
{
+ Register((int)GDataValueCode.Position, OnUpdatePosition);
}
- public override void ViewUpdate(EDBossData data, GameObject view)
+ private void OnUpdatePosition((GameObject View, EDBossData Data) tuple)
{
-
- view.name = $"Boss_{data.Id}";
+ var (view, data) = tuple;
if (data.Value.Position != null)
{
view.transform.DOMove(data.Value.Position.ToVector3(), 0.5f);
}
-
}
public override GameObject NewView(EDBossData data)
{
- return Object.Instantiate(Boss, VWorld.transform);
+ var view = Object.Instantiate(Boss, VWorld.transform);
+ view.name = $"Boss_{data.Id}";
+ return view;
}
public override EDBossData[] GetData()
diff --git a/JNFrame2/Assets/Scripts/Game/View/Entity/VDNodes.cs b/JNFrame2/Assets/Scripts/Game/View/Entity/VDNodes.cs
index 7a537474..5ec189a7 100644
--- a/JNFrame2/Assets/Scripts/Game/View/Entity/VDNodes.cs
+++ b/JNFrame2/Assets/Scripts/Game/View/Entity/VDNodes.cs
@@ -10,28 +10,32 @@ using UnityEngine;
namespace Game.JNGFrame.View.Entity
{
- public class VDNodes : ViewData
+ public class VDNodes : VDEntityBasis
{
public GameObject VWorld => App.Resource.VWorld;
public GameObject Player => App.Resource.Player;
public VDNodes(SViewSystem root) : base(root)
{
+ Register((int)GDataValueCode.Position, OnUpdatePosition);
}
- public override void ViewUpdate(EDNodeData data, GameObject view)
+ ///
+ /// 更新位置
+ ///
+ private void OnUpdatePosition((GameObject View, EDNodeData Data) tuple)
{
-
- view.name = $"Node_{data.Id}";
+ var (view, data) = tuple;
if (data.Value.Position != null)
{
view.transform.DOMove(data.Value.Position.ToVector3(), 0.5f);
}
-
}
public override GameObject NewView(EDNodeData data)
{
- return Object.Instantiate(Player, VWorld.transform);
+ var view = Object.Instantiate(Player, VWorld.transform);
+ view.name = $"Node_{data.Id}";
+ return view;
}
public override EDNodeData[] GetData()
diff --git a/JNFrame2/Assets/Scripts/Game/View/Entity/VDPlayers.cs b/JNFrame2/Assets/Scripts/Game/View/Entity/VDPlayers.cs
index 885450ce..a0a7793d 100644
--- a/JNFrame2/Assets/Scripts/Game/View/Entity/VDPlayers.cs
+++ b/JNFrame2/Assets/Scripts/Game/View/Entity/VDPlayers.cs
@@ -9,7 +9,7 @@ using UnityEngine;
namespace Game.JNGFrame.View.Entity
{
- public class VDPlayers : ViewData
+ public class VDPlayers : VDEntityBasis
{
public GameObject VWorld => App.Resource.VWorld;
public GameObject Player => App.Resource.Player;
@@ -17,17 +17,41 @@ namespace Game.JNGFrame.View.Entity
public VDPlayers(SViewSystem root) : base(root)
{
+
+ Register((int)GDataValueCode.Position, OnUpdatePosition);
+ Register((int)EDPlayerValueCode.Auth, OnUpdateAuth);
+
}
- public override void ViewUpdate(EDPlayerData data, GameObject view)
+ ///
+ /// 更新坐标
+ ///
+ ///
+ private void OnUpdatePosition((GameObject View, EDPlayerData Data) tuple)
{
- view.name = $"Player_{data.Id}";
+ var (view, data) = tuple;
//更新位置
if (data.Value.Position != null)
{
view.transform.DOMove(data.Value.Position.ToVector3(), 0.5f);
}
+
+ if (data.Value.Auth == App.ClientID)
+ {
+ //更新本地玩家位置
+ if (data.Value.Position != null) App.Game.GetClient()?.SetPlayerPosition(data.Value.Position.ToLVector3());
+ }
+
+ }
+
+ ///
+ /// 更新权限
+ ///
+ private void OnUpdateAuth((GameObject View, EDPlayerData Data) tuple)
+ {
+
+ var (view, data) = tuple;
//权限操作
if (App.IsClient() && data.Value.Auth == App.ClientID)
@@ -37,17 +61,14 @@ namespace Game.JNGFrame.View.Entity
FreeLook.LookAt = view.transform;
FreeLook.Follow = view.transform;
- //更新玩家位置
- if (data.Value.Position != null) App.Game.GetClient()?.SetPlayerPosition(data.Value.Position.ToLVector3());
-
}
-
+
}
public override GameObject NewView(EDPlayerData data)
{
var gameObject = Object.Instantiate(Player, VWorld.transform);
- // gameObject.transform.DOMove(gameObject.transform.position + new Vector3(0,0,1000), 100);
+ gameObject.name = $"Player_{data.Id}";
return gameObject;
}
diff --git a/JNFrame2/Assets/Scripts/Game/View/VDEntityBasis.cs b/JNFrame2/Assets/Scripts/Game/View/VDEntityBasis.cs
new file mode 100644
index 00000000..3c7ca86f
--- /dev/null
+++ b/JNFrame2/Assets/Scripts/Game/View/VDEntityBasis.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using DotRecast.Core.Collections;
+using Game.JNGState.Logic.Data;
+using JNGame.Sync.System;
+using JNGame.Sync.View;
+using Plugins.JNGame.Util;
+using UnityEngine;
+
+namespace Game.JNGFrame.View
+{
+
+ public abstract class VDEntityBasis : ViewData where T : IGDataBase
+ {
+
+ private readonly Dictionary> Event = new();
+
+ protected VDEntityBasis(SViewSystem root) : base(root)
+ {
+ }
+
+ public override void Execute()
+ {
+ base.Execute();
+
+ //调用改动
+ var dataList = GetData();
+
+ foreach (var data in dataList){
+
+ if (views.TryGetValue(data.Id,out var view))
+ {
+ data.WriteCodes.ForEach(code =>
+ {
+ Event[code]?.Invoke((view.Data,data));
+ });
+ }
+ }
+
+ }
+
+ public override void ViewUpdate(T data, GameObject view)
+ {
+
+ }
+
+ public void Register(int code,Action<(GameObject View, T Data)> action)
+ {
+ Event[code] = action;
+ }
+
+
+ }
+}
\ No newline at end of file
diff --git a/JNFrame2/Assets/Scripts/Game/View/VDEntityBasis.cs.meta b/JNFrame2/Assets/Scripts/Game/View/VDEntityBasis.cs.meta
new file mode 100644
index 00000000..765d8c72
--- /dev/null
+++ b/JNFrame2/Assets/Scripts/Game/View/VDEntityBasis.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d099ea459fc642698d0c5dcdbb1fa64a
+timeCreated: 1726944240
\ No newline at end of file
diff --git a/JNFrame2/BestHTTP.csproj b/JNFrame2/BestHTTP.csproj
index e8366a42..e07bd8db 100644
--- a/JNFrame2/BestHTTP.csproj
+++ b/JNFrame2/BestHTTP.csproj
@@ -2809,12 +2809,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
diff --git a/JNFrame2/StompyRobot.SRDebugger.Editor.csproj b/JNFrame2/StompyRobot.SRDebugger.Editor.csproj
index 017c3d1e..8b66b138 100644
--- a/JNFrame2/StompyRobot.SRDebugger.Editor.csproj
+++ b/JNFrame2/StompyRobot.SRDebugger.Editor.csproj
@@ -839,12 +839,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\Facades\System.Xml.XPath.XDocument.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.TestRunner.dll
diff --git a/JNFrame2/StompyRobot.SRDebugger.csproj b/JNFrame2/StompyRobot.SRDebugger.csproj
index 14c03377..f5c92a6b 100644
--- a/JNFrame2/StompyRobot.SRDebugger.csproj
+++ b/JNFrame2/StompyRobot.SRDebugger.csproj
@@ -916,12 +916,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
diff --git a/JNFrame2/StompyRobot.SRF.Editor.csproj b/JNFrame2/StompyRobot.SRF.Editor.csproj
index 8ed38a64..d9a80448 100644
--- a/JNFrame2/StompyRobot.SRF.Editor.csproj
+++ b/JNFrame2/StompyRobot.SRF.Editor.csproj
@@ -830,12 +830,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\Facades\System.Xml.XPath.XDocument.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.TestRunner.dll
diff --git a/JNFrame2/StompyRobot.SRF.csproj b/JNFrame2/StompyRobot.SRF.csproj
index d7f5537e..a1b170eb 100644
--- a/JNFrame2/StompyRobot.SRF.csproj
+++ b/JNFrame2/StompyRobot.SRF.csproj
@@ -861,12 +861,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
diff --git a/JNFrame2/UniTask.Addressables.csproj b/JNFrame2/UniTask.Addressables.csproj
index a331c4e7..ac2ca5f7 100644
--- a/JNFrame2/UniTask.Addressables.csproj
+++ b/JNFrame2/UniTask.Addressables.csproj
@@ -806,12 +806,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
diff --git a/JNFrame2/UniTask.DOTween.csproj b/JNFrame2/UniTask.DOTween.csproj
index 2cf761ae..00a41b0e 100644
--- a/JNFrame2/UniTask.DOTween.csproj
+++ b/JNFrame2/UniTask.DOTween.csproj
@@ -806,12 +806,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
diff --git a/JNFrame2/UniTask.Editor.csproj b/JNFrame2/UniTask.Editor.csproj
index 49045b5d..838d965b 100644
--- a/JNFrame2/UniTask.Editor.csproj
+++ b/JNFrame2/UniTask.Editor.csproj
@@ -826,12 +826,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\Facades\System.Xml.XPath.XDocument.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.TestRunner.dll
diff --git a/JNFrame2/UniTask.Linq.csproj b/JNFrame2/UniTask.Linq.csproj
index 25015907..1cd1ea69 100644
--- a/JNFrame2/UniTask.Linq.csproj
+++ b/JNFrame2/UniTask.Linq.csproj
@@ -878,12 +878,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
diff --git a/JNFrame2/UniTask.TextMeshPro.csproj b/JNFrame2/UniTask.TextMeshPro.csproj
index 66736b24..f1e4a588 100644
--- a/JNFrame2/UniTask.TextMeshPro.csproj
+++ b/JNFrame2/UniTask.TextMeshPro.csproj
@@ -810,12 +810,12 @@
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\Unity.TextMeshPro.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
diff --git a/JNFrame2/UniTask.csproj b/JNFrame2/UniTask.csproj
index ef7114f0..b3457ec5 100644
--- a/JNFrame2/UniTask.csproj
+++ b/JNFrame2/UniTask.csproj
@@ -878,12 +878,12 @@
C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll
-
- D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
-
D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll
+
+ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll
+
diff --git a/JNFrame2/UserSettings/Layouts/default-2021.dwlt b/JNFrame2/UserSettings/Layouts/default-2021.dwlt
index 9c731c7a..1dbf4745 100644
--- a/JNFrame2/UserSettings/Layouts/default-2021.dwlt
+++ b/JNFrame2/UserSettings/Layouts/default-2021.dwlt
@@ -19,7 +19,7 @@ MonoBehaviour:
width: 1920
height: 1037
m_ShowMode: 4
- m_Title: "\u6E38\u620F"
+ m_Title: "\u63A7\u5236\u53F0"
m_RootView: {fileID: 2}
m_MinSize: {x: 875, y: 300}
m_MaxSize: {x: 10000, y: 10000}
@@ -119,7 +119,7 @@ MonoBehaviour:
m_MinSize: {x: 400, y: 200}
m_MaxSize: {x: 32384, y: 16192}
vertical: 0
- controlID: 87
+ controlID: 22
--- !u!114 &6
MonoBehaviour:
m_ObjectHideFlags: 52
@@ -144,7 +144,7 @@ MonoBehaviour:
m_MinSize: {x: 300, y: 200}
m_MaxSize: {x: 24288, y: 16192}
vertical: 1
- controlID: 42
+ controlID: 23
--- !u!114 &7
MonoBehaviour:
m_ObjectHideFlags: 52
@@ -170,7 +170,7 @@ MonoBehaviour:
m_MinSize: {x: 300, y: 100}
m_MaxSize: {x: 24288, y: 8096}
vertical: 0
- controlID: 43
+ controlID: 24
--- !u!114 &8
MonoBehaviour:
m_ObjectHideFlags: 52
@@ -396,7 +396,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
- m_ExpandedIDs: b8cdfeff0ecefeffccd0feffd0d0feff4ce7feffa2e7feff60eafeff64eafeff4e18ffff681fffffbe1fffff7c22ffff8022ffff4825ffff6630ffffbc30ffff7a33ffff7e33ffff0238ffff5838ffff163bffff1a3bffff0248ffff5848ffff164bffff1a4bffffdc54ffff1857ffff6e57ffff2c5affff305affff3c6affff926affff506dffff546dffffd28dffff4e9bffff36aaffff5eabffff8028010052300100
+ m_ExpandedIDs: d2e4ffff28e5ffffe6e7ffffeae7ffff14eaffff6aeaffff28edffff2cedffffa8f6fffffef6ffffbcf9ffffc0f9ffff1afbffff
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@@ -734,9 +734,9 @@ MonoBehaviour:
m_PlayAudio: 0
m_AudioPlay: 0
m_Position:
- m_Target: {x: 22.490227, y: 27.807896, z: -23.089281}
+ m_Target: {x: 66.17166, y: 74.382965, z: -68.47802}
speed: 2
- m_Value: {x: 22.490227, y: 27.807896, z: -23.089281}
+ m_Value: {x: 66.17166, y: 74.382965, z: -68.47802}
m_RenderMode: 0
m_CameraMode:
drawMode: 0
@@ -783,9 +783,9 @@ MonoBehaviour:
m_GridAxis: 1
m_gridOpacity: 0.5
m_Rotation:
- m_Target: {x: -0.36437556, y: 0.18858139, z: -0.07560821, w: -0.9088209}
+ m_Target: {x: -0.2639696, y: -0.106222175, z: 0.029262349, w: -0.95822775}
speed: 2
- m_Value: {x: -0.36437473, y: 0.18858096, z: -0.07560804, w: -0.90881884}
+ m_Value: {x: -0.26396698, y: -0.106221125, z: 0.02926206, w: -0.9582183}
m_Size:
m_Target: 2.598076
speed: 2
@@ -899,7 +899,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: 26e80000
m_LastClickedID: 59430
- m_ExpandedIDs: 0000000014e8000000ca9a3b
+ m_ExpandedIDs: 000000000a740000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@@ -927,7 +927,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
- m_ExpandedIDs:
+ m_ExpandedIDs: 000000000a740000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
diff --git a/JNFrame2/obj/Debug/AimingRig.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/AimingRig.csproj.AssemblyReference.cache
index 4211a89a..bbee1800 100644
Binary files a/JNFrame2/obj/Debug/AimingRig.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/AimingRig.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache
index bd4c69ba..81972b0c 100644
Binary files a/JNFrame2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/Assembly-CSharp-firstpass.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/Assembly-CSharp-firstpass.csproj.AssemblyReference.cache
index 0219c10b..b56a2f3f 100644
Binary files a/JNFrame2/obj/Debug/Assembly-CSharp-firstpass.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/Assembly-CSharp-firstpass.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache
index 50643066..b6faeea2 100644
Binary files a/JNFrame2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/BestHTTP.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/BestHTTP.csproj.AssemblyReference.cache
index 70d13702..5ad5d628 100644
Binary files a/JNFrame2/obj/Debug/BestHTTP.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/BestHTTP.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/StompyRobot.SRDebugger.Editor.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/StompyRobot.SRDebugger.Editor.csproj.AssemblyReference.cache
index 35c806a4..ae875719 100644
Binary files a/JNFrame2/obj/Debug/StompyRobot.SRDebugger.Editor.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/StompyRobot.SRDebugger.Editor.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/StompyRobot.SRDebugger.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/StompyRobot.SRDebugger.csproj.AssemblyReference.cache
index 4211a89a..bbee1800 100644
Binary files a/JNFrame2/obj/Debug/StompyRobot.SRDebugger.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/StompyRobot.SRDebugger.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/StompyRobot.SRF.Editor.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/StompyRobot.SRF.Editor.csproj.AssemblyReference.cache
index 35c806a4..ae875719 100644
Binary files a/JNFrame2/obj/Debug/StompyRobot.SRF.Editor.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/StompyRobot.SRF.Editor.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/StompyRobot.SRF.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/StompyRobot.SRF.csproj.AssemblyReference.cache
index 4211a89a..bbee1800 100644
Binary files a/JNFrame2/obj/Debug/StompyRobot.SRF.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/StompyRobot.SRF.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/UniTask.Addressables.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.Addressables.csproj.AssemblyReference.cache
index 70d13702..5ad5d628 100644
Binary files a/JNFrame2/obj/Debug/UniTask.Addressables.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/UniTask.Addressables.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/UniTask.DOTween.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.DOTween.csproj.AssemblyReference.cache
index 87560d28..295c09c5 100644
Binary files a/JNFrame2/obj/Debug/UniTask.DOTween.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/UniTask.DOTween.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/UniTask.Editor.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.Editor.csproj.AssemblyReference.cache
index 69d93668..66bac86c 100644
Binary files a/JNFrame2/obj/Debug/UniTask.Editor.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/UniTask.Editor.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/UniTask.Linq.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.Linq.csproj.AssemblyReference.cache
index 70d13702..5ad5d628 100644
Binary files a/JNFrame2/obj/Debug/UniTask.Linq.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/UniTask.Linq.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/UniTask.TextMeshPro.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.TextMeshPro.csproj.AssemblyReference.cache
index 8f88e2b8..1788975d 100644
Binary files a/JNFrame2/obj/Debug/UniTask.TextMeshPro.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/UniTask.TextMeshPro.csproj.AssemblyReference.cache differ
diff --git a/JNFrame2/obj/Debug/UniTask.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.csproj.AssemblyReference.cache
index 70d13702..5ad5d628 100644
Binary files a/JNFrame2/obj/Debug/UniTask.csproj.AssemblyReference.cache and b/JNFrame2/obj/Debug/UniTask.csproj.AssemblyReference.cache differ