//
|
// GameApp.cs
|
// Create:
|
// 2019-10-29
|
// Description:
|
// 代码热更新服务类
|
// Author:
|
// 薛林强 <545626463@qq.com>
|
//
|
// Copyright (c) 2026 虚幻骑士科技
|
|
using System;
|
using System.Collections;
|
using System.IO;
|
using UnityEngine;
|
using log4net.Util;
|
using System.Collections.Generic;
|
using System.Threading;
|
using Skyunion;
|
|
public class HotFixService_IFix : Module, IHotFixService
|
{
|
private Hotfix.Game mGame;
|
#region 实现 IModule
|
|
public override void Init()
|
{
|
CoreUtils.assetService.LoadFileAsync(Path.Combine(Application.streamingAssetsPath, "Hotfix.patch.bytes"), (rDLLBytes) =>
|
{
|
try
|
{
|
if (rDLLBytes != null && rDLLBytes.Length > 0)
|
{
|
IFix.Core.PatchManager.Load(new MemoryStream(rDLLBytes));
|
}
|
}
|
finally
|
{
|
OnInitialized();
|
}
|
});
|
}
|
public override void AfterInit()
|
{
|
mGame = new Hotfix.Game();
|
mGame.Initialize(mPluginManager, "HotFixService_IFix");
|
}
|
|
public override void Update()
|
{
|
if (mGame != null)
|
{
|
mGame.Update();
|
}
|
}
|
public override void Shut()
|
{
|
base.Shut();
|
if (mGame != null)
|
{
|
mGame.Shut();
|
}
|
}
|
#endregion 实现 IModule
|
|
#region 实现 HotFixService
|
public HotfixMode GetHotfixMode()
|
{
|
return HotfixMode.IFix;
|
}
|
public IHotfixObject Instantiate(string rTypeName, params object[] rArgs)
|
{
|
var rObject = new HotfixObject_IFix(rTypeName);
|
rObject.mObject = Activator.CreateInstance(Type.GetType(rTypeName), rArgs);
|
return rObject;
|
}
|
|
public T Instantiate<T>(string rTypeName, params object[] rObjs)
|
{
|
return (T)Activator.CreateInstance(Type.GetType(rTypeName), rObjs);
|
}
|
|
public T Instantiate<T>(Type type)
|
{
|
return (T)Instantiate(type);
|
}
|
|
public object Instantiate(Type type)
|
{
|
return Activator.CreateInstance(type);
|
}
|
|
public object Invoke(IHotfixObject rHotfixObj, string rMethodName, params object[] rArgs)
|
{
|
if (rHotfixObj == null) return null;
|
return rHotfixObj.Invoke(rMethodName, rArgs);
|
}
|
|
public object InvokeParent(IHotfixObject rHotfixObj, string rParentType, string rMethodName, params object[] rArgs)
|
{
|
if (rHotfixObj == null) return null;
|
return rHotfixObj.InvokeParent(rParentType, rMethodName, rArgs);
|
}
|
|
public object InvokeStatic(string rTypeName, string rMethodName, params object[] rArgs)
|
{
|
var rType = Type.GetType(rTypeName);
|
var method = rType.GetMethod(rMethodName);
|
return method.Invoke(null, rArgs);
|
}
|
public object GetAppdomain()
|
{
|
return null;
|
}
|
#endregion 实现 IHotFixService
|
}
|