创建一个程序集用来进行热更,在Assets下面创建一个Hot文件夹,在创建一个Assembly Definition命名为Hot(命名是个人习惯)
然后将这个程序集加入到热更设置中HybridCLR - Settings
在创建一个热更脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class HotFix : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
GetComponent<Image>().color = Color.black;
}
if (Input.GetKeyDown(KeyCode.S))
{
GetComponent<Image>().color = Color.blue;
}
if (Input.GetKeyDown(KeyCode.D))
{
GetComponent<Image>().color = Color.red;
}
}
}
然后编译成热更需要的dll文件,HybridCLR - CompileDll - Win64(测试使用的PC平台)
然后创建一个UI场景,写一个测试脚本,挂载到场景中
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;
using UnityEngine.Networking;
public class TestHot : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
StartCoroutine(load());
}
// Update is called once per frame
void Update()
{
}
IEnumerator load()
{
var url = "http://0.0.0.0/Hot.dll";
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
byte[] b = request.downloadHandler.data;
var ass = Assembly.Load(b);
Type entryType = ass.GetType("HotFix");
gameObject.AddComponent(entryType);
}
}
最后打包运行: