在自定义Unity软件包中使用ECS

时间:2019-08-23 11:24:00

标签: c# unity3d

我为Unity构建了一个名为world-renderer的自定义程序包。这是文件夹结构。

enter image description here

在“运行时”内部是我的全部源代码。要在Unity项目中使用它,请将此行添加到该项目的manifest.json中。

"com.tamagames.extinction.word-renderer": "file:C:/Users/dbugger/projects/unity/world-renderer",

到目前为止,此方法效果很好,但现在我想开始在自定义程序包中使用ECS。所以我将其命名空间添加到其中一个文件中:

using Unity.Entities;

现在当我返回Unity编辑器时,看到以下错误消息:

  

CS0234:名称空间“ Unity”中不存在类型或名称空间名称“实体”(您是否缺少程序集引用?)

我认为我需要将依赖项添加到自定义程序包的package.json中,因此我这样编写了更新的代码:

{
  "name": "com.tamagames.extinction.word-renderer",
  "version": "1.0.4",
  "displayName": "Extinction - World renderer",
  "description": "World renderer for Extinction",
  "unity": "2019.1",
  "unityRelease": "0b5",
  "keywords": [],
  "dependencies": {
    "com.unity.entities": "0.1.1-preview" // Dependency added
 },
  "author": {
    "name": "Enrique Moreno Tent",
    "email": "enriquemorenotent@gmail.com",
    "url": "https://enriquemorenotent.com"
  }
}

但是我仍然不断遇到同样的错误。

我在做什么错了?

更新

我尝试将引用添加到程序包的Assembly中,如下所示:

{
    "name": "Unity.com.tamagames.extinction.world-renderer-ecs",
    "optionalUnityReferences": ["com.unity.entities"],
    "includePlatforms": [],
    "excludePlatforms": [],
    "allowUnsafeCode": false,
    "overrideReferences": false,
    "precompiledReferences": [],
    "autoReferenced": true,
    "defineConstraints": [],
    "versionDefines": []
}

那确实解决了找不到“ Unity.Entities”的问题,但是现在,在Unity Project中,找不到我的源代码中的类!

2 个答案:

答案 0 :(得分:0)

我怀疑这与程序集定义有关:您可以通过在代码中添加引用来解决此问题(在您的程序集定义文件中-如果您没有引用,则需要在 Runtime中创建一个引用) 文件夹)到Unity.Entities

答案 1 :(得分:0)

好吧,我明白了。

首先,我不应该使用optionalUnityReferences,而应该使用references

但是最大的错误是,尽管package.json中的依赖项称为com.unity.entities,但Assembly文件中的依赖项应称为Unity.Entities