我正在使用 Visual Studio 2022 和 C# 制作游戏,我想知道当您热重新加载应用程序(当它正在运行时)时是否可以触发一些代码。
我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法,我想在热重载时执行它们。
我正在构建一个游戏并制作关卡,我有 LoadLevel 方法,该方法将这个 LevelData 静态类中的所有元素(平台、实体等)放入游戏场景中。 UnloadLevel 函数则执行相反的操作。为了快速构建关卡而不需要制作一个完整的、成熟的关卡编辑器(制作起来又长又麻烦),我想使用 Visual Studio 2022 的热重载功能来更改关卡数据,热重载,并自动查看我的关卡中的变化场景,无需手动卸载和重新加载。
提前致谢
我相信MetadataUpdateHandlerAttribute https://learn.microsoft.com/en-us/dotnet/api/system.reflection.metadata.metadataupdatehandlerattribute?view=net-6.0是你正在寻找的(最初发现here https://github.com/dotnet/aspnetcore/issues/37100).
Example:
[assembly: System.Reflection.Metadata.MetadataUpdateHandler(typeof(HotReloadManager))]
public static class HotReloadManager
{
public static void ClearCache(Type[]? updatedTypes)
{
Console.WriteLine("HotReloadManager.ClearCache");
}
public static void UpdateApplication(Type[]? updatedTypes)
{
Console.WriteLine("HotReloadManager.UpdateApplication");
}
}
设置有点奇怪,涉及魔术名称方法而不是接口等。
另请注意,该属性适用于程序集,而不适用于类。
您可能会在谷歌搜索时看到对 ASP.NET 的引用,但不用担心它在例如控制台应用程序中运行良好(我自己将其用于游戏引擎)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)