【发布时间】:2022-12-04 21:36:34
【问题描述】:
我正在处理新的 ECS 包 (com.unity.entities) 并在我的 Monobehavior 中包含以下代码:
public class LevelBaker : Baker<LevelMono>
{
public override void Bake(LevelMono authoring)
{
AddComponent(new LevelProperties
{
SpawnDimensions = authoring.SpawnDimensions,
NeutralSpawnCount = authoring.NeutralSpawnCount,
NeutralActorPrefab = GetEntity(authoring.NeutralActorPrefab)
});
AddComponent(new LevelRandom
{
Value = Random.CreateFromIndex(authoring.RandomSeed)
});
}
}
代码运行正常,但 Rider 突出显示了 AddComponent 方法
“ComponentsAndTags.LevelProperties”类型必须是有效的非托管 类型(简单数字、'bool'、'char'、'void'、枚举类型或 具有非托管类型的所有字段的非泛型结构类型 嵌套级别)以便将其用作“T”的类型参数 范围
错误,因为它有这样的定义:
public void AddComponent<T>(in T component) where T : unmanaged, IComponentDataLevelProperties 和 LevelRandom 是简单的结构,只包含非托管类型,但 Rider 似乎不知道。这是 LevelProperties 的代码:
public struct LevelProperties : IComponentData { public float2 SpawnDimensions; public int NeutralSpawnCount; public Entity NeutralActorPrefab; }我如何才能将 Level Properties 结构“标记”为非托管结构,以便 Rider 停止将其突出显示为错误?
我使用的是最新版本的 Rider 和 Unity 2022.2.0b16。代码编译运行,只有 Rider 显示错误。
【问题讨论】:
标签: c# unity3d struct unmanaged rider