我正在开发我在C#中转换的Haxe代码并插入到Unity项目中。
转换工作正常,我可以在Unity中单独导入时使用生成的类。
为了使其工作,我必须将整个生成的src
文件夹包含在Unity中,包括Type.cs
文件。
但是,当我导入“后处理堆栈”(基本的Unity扩展)时,由于名称冲突,我收到错误。 Type
类也是一个基本的C#类,后处理脚本使用它。
haxe-Type
优先并打破编译:
Assets/PostProcessing/Runtime/PostProcessingBehaviour.cs(406,30): error CS1502: The best overloaded method match for `System.Collections.Generic.Dictionary<Type,System.Collections.Generic.KeyValuePair<UnityEngine.Rendering.CameraEvent,UnityEngine.Rendering.CommandBuffer>>.Add(Type, System.Collections.Generic.KeyValuePair<UnityEngine.Rendering.CameraEvent,UnityEngine.Rendering.CommandBuffer>)' has some invalid arguments
Assets/PostProcessing/Runtime/PostProcessingBehaviour.cs(406,34): error CS1503: Argument `#1' cannot convert `System.Type' expression to type `Type'
我不知道是否可以通过使用C#/ Unity / Mono搜索路径解决此问题。
我想知道更适合(可选)将所有haxe顶级类包装到haxe
命名空间或特殊haxe-default
命名空间中,或者将它们作为前缀添加到{{1 }}。
这些基本类型的名称冲突可能会出现在许多其他环境中,而不仅仅出现在Unity中。
答案 0 :(得分:2)
我在C#的Haxe文档中找到了解决方案: https://github.com/HaxeFoundation/HaxeManual/wiki/Haxe-C%23
-D no-root在haxe.root命名空间中生成无包的haxe类型,以避免与根命名空间中的其他类型冲突
这样,全局级别的所有类都将在命名空间haxe.root
下生成。