mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-06-26 19:34:47 +00:00
53 lines
1.7 KiB
C#
53 lines
1.7 KiB
C#
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Plugins.JNGame.Sync.Frame.game;
|
|
using UnityEngine;
|
|
|
|
namespace Game.Plugins.App.Sync
|
|
{
|
|
public class JNGSyncFrameEntrust : JNGSyncFrameDefault
|
|
{
|
|
|
|
private IEnumerable<Component> _components;
|
|
public IEnumerable<Component> Components => _components;
|
|
|
|
public Component[] allow;
|
|
|
|
public override void OnSyncLoad()
|
|
{
|
|
|
|
//获取非同步的组件
|
|
_components = this.GetComponents<Component>()
|
|
.Where(item => !(item is IJNSyncFrameComponent))
|
|
.Where(item => !(item is Transform))
|
|
.Where(item => !(allow.Contains(item)));
|
|
|
|
Debug.Log($"{this.NID} 有{Components.Count()}组件不是同步组件 尝试接管同步 请保证被接管的组件有enabled 同时被接管的组件 enabled 禁止修改");
|
|
|
|
foreach (var component in Components)
|
|
{
|
|
var property = component.GetType().GetProperty("enabled");
|
|
if (property == null)
|
|
{
|
|
Debug.Log($"{this.NID} 有组件不是同步组件 并且没有 enabled 为了防止不同步 直接删除!");
|
|
Destroy(component);
|
|
continue;
|
|
}
|
|
property.SetValue(component,false);
|
|
}
|
|
|
|
_components = this.GetComponents<Component>()
|
|
.Where(item => !(item.GetType().IsAssignableFrom(typeof(IJNSyncFrameComponent))));
|
|
|
|
}
|
|
|
|
public override void OnSyncUpdate(int dt, JNFrameInfo frame, Object input)
|
|
{
|
|
base.OnSyncUpdate(dt, frame, input);
|
|
}
|
|
|
|
}
|
|
}
|