Unity3D 中的自定义 protobuf-net RuntimeTypeModel - 无法加载文件或程序集
Custom protobuf-net RuntimeTypeModel in Unity3D - Could not load file or assembly
我正在尝试使用此功能在 Unity3D 中构建自定义 protobuf-net RuntimeTypeModel:
private static RuntimeTypeModel GetModel()
{
RuntimeTypeModel typeModel = TypeModel.Create();
foreach (var t in GetTypes(CompilationPipeline.GetAssemblies()))
{
var contract = t.GetCustomAttributes(typeof(ProtoContractAttribute), false);
if (contract.Length > 0)
{
typeModel.Add(t, true);
//add unity types
typeModel.Add(typeof(Vector2), false).Add("x", "y");
typeModel.Add(typeof(Vector3), false).Add("x", "y", "z");
}
}
return typeModel;
}
模型已构建,但当它尝试使用它时,我一直在 Unity 编辑器中遇到装配错误。 - 无法加载文件或程序集 UnityEngine.UI、UnityEngine.Purchasing、Assembly-CSharp 等 使用 RuntimeTypeModel.Default 时没有错误。
奇怪的是Unity启动后第二次进入播放模式才显示错误。第一次播放没有错误,当我退出播放模式时,控制台仍然没有错误。只有当我第二次进入播放模式时,错误才会显示并一直存在,直到我重新启动 Unity。
我不知道如何改进代码以获得不会导致错误的正确 RuntimeTypeModel。构建 RuntimeTypeModel 的代码来自 对我的其他问题的回答。
编辑:
我没有使用以下几行,但这与问题无关:
//add unity types
typeModel.Add(typeof(Vector2), false).Add("x", "y");
typeModel.Add(typeof(Vector3), false).Add("x", "y", "z");
新的 RuntimeTypeModel 在 android 设备上运行没有问题。所以目前我决定在编辑器中使用简单的 #if #else
语句将模型从 MyProtoModel 更改为 RuntimeTypeModel.Default。
我在编辑器中没有遇到错误,我仍然可以在 android 上使用我的新模型。我对临时解决方案不满意,仍然希望得到更好的答案。
我正在尝试使用此功能在 Unity3D 中构建自定义 protobuf-net RuntimeTypeModel:
private static RuntimeTypeModel GetModel()
{
RuntimeTypeModel typeModel = TypeModel.Create();
foreach (var t in GetTypes(CompilationPipeline.GetAssemblies()))
{
var contract = t.GetCustomAttributes(typeof(ProtoContractAttribute), false);
if (contract.Length > 0)
{
typeModel.Add(t, true);
//add unity types
typeModel.Add(typeof(Vector2), false).Add("x", "y");
typeModel.Add(typeof(Vector3), false).Add("x", "y", "z");
}
}
return typeModel;
}
模型已构建,但当它尝试使用它时,我一直在 Unity 编辑器中遇到装配错误。 - 无法加载文件或程序集 UnityEngine.UI、UnityEngine.Purchasing、Assembly-CSharp 等 使用 RuntimeTypeModel.Default 时没有错误。
奇怪的是Unity启动后第二次进入播放模式才显示错误。第一次播放没有错误,当我退出播放模式时,控制台仍然没有错误。只有当我第二次进入播放模式时,错误才会显示并一直存在,直到我重新启动 Unity。
我不知道如何改进代码以获得不会导致错误的正确 RuntimeTypeModel。构建 RuntimeTypeModel 的代码来自
编辑: 我没有使用以下几行,但这与问题无关:
//add unity types
typeModel.Add(typeof(Vector2), false).Add("x", "y");
typeModel.Add(typeof(Vector3), false).Add("x", "y", "z");
新的 RuntimeTypeModel 在 android 设备上运行没有问题。所以目前我决定在编辑器中使用简单的 #if #else
语句将模型从 MyProtoModel 更改为 RuntimeTypeModel.Default。
我在编辑器中没有遇到错误,我仍然可以在 android 上使用我的新模型。我对临时解决方案不满意,仍然希望得到更好的答案。