在自定义 Unity 包中使用 ECS

Posted

技术标签:

【中文标题】在自定义 Unity 包中使用 ECS【英文标题】:Using ECS in a custom Unity package 【发布时间】:2019-08-23 11:24:00 【问题描述】:

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

“运行时”里面是我所有的源代码。为了在 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"
  

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

我做错了什么?

更新

我尝试添加对我的包的程序集的引用,如下所示:


    "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 项目中,找不到我的源代码中的类!

【问题讨论】:

【参考方案1】:

好吧,我让它工作了。

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

我尝试将其添加到我的程序集文件中:"optionalUnityReferences": ["com.unity.entities"],。这确实解决了 ECS 的问题,但是项目将在我的包中找不到类:/ 问题已更新。

以上是关于在自定义 Unity 包中使用 ECS的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D编辑器扩展—— 在自定义编辑器窗口中序列化List对象

Unity3D编辑器扩展—— 在自定义编辑器窗口中序列化List对象

Unity 脚本自定义Mesh物体形状

介绍包的使用重点

如何在自定义组件宿主元素上使用自定义指令

iOS - 如何在自定义单元格中使用继承?