如何避免haxe Type类和C#Type类之间的冲突?

时间:2017-08-11 09:22:40

标签: namespaces haxe

我正在开发我在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中。

1 个答案:

答案 0 :(得分:2)

我在C#的Haxe文档中找到了解决方案: https://github.com/HaxeFoundation/HaxeManual/wiki/Haxe-C%23

  

-D no-root在haxe.root命名空间中生成无包的haxe类型,以避免与根命名空间中的其他类型冲突

这样,全局级别的所有类都将在命名空间haxe.root下生成。