-1

我最近得到了一个 Unity VR 项目来整理。非常混乱,甚至不在Git上。它由四个 Unity 场景组成,但每个场景都存在于自己的 Unity 项目中。我需要将所有这些都放在一个构建项目中,这就是当前问题所在。这些场景有很多共同的脚本,它们是在项目之间复制粘贴的。其中一些是完全相同的,另一些则有一两行差异。

从我的研究来看,命名空间似乎是最好的前进方式,因此我不必手动调整所有内容。我给基本场景一个独特的命名空间,效果很好。我将第二个场景作为一个包导入,并给它一个不同的命名空间。

现在我得到了一堆与 Valve Corporation 的 VR 脚本有关的编译错误,例如

Partial declarations of 'SteamVR_Behaviour_BooleanEvent' must not specify different base classes

Duplicate 'Serializable' attribute

The namespace 'Valve.VR' already contains a definition for 'SteamVR_Behaviour_BooleanEvent'

我不理解这些脚本,也不想(也不应该)弄乱它们。

导致最后一个错误的一个例子是:

  /// <summary>This event fires whenever a change happens in the action</summary>
        public SteamVR_Behaviour_BooleanEvent onChange;

    /// <summary>This event fires whenever the action is updated</summary>
    public SteamVR_Behaviour_BooleanEvent onUpdate;

    /// <summary>This event will fire whenever the boolean action is true and gets updated</summary>
    public SteamVR_Behaviour_BooleanEvent onPress;

然后在脚本中进一步向下(SteamVR_Behaviour_Boolean.cs):

[Serializable]
    public class SteamVR_Behaviour_BooleanEvent : UnityEvent<SteamVR_Action_Boolean> { }

每个 BooleanEvent 都会突出显示。

我是否在命名空间过程中遗漏了某些内容,或者有人知道解决我的问题的更有效方法吗?我已经花了好几天的时间,所以任何建议都将不胜感激。

4

1 回答 1

0

我最终做的是这样的:(我经常这样偷工减料,老实说不认为它会起作用,但它确实做到了。)

- 选定的基础场景。

- 将下一个场景作为一个包导入,在导入取消选择的脚本时,这些脚本会显示为潜在重复的小灰色符号。

- 删除了任何导致错误的重复脚本或脚本文件夹,并且在导入时没有自动作为重复项被拾取。

-重构了导入场景中脚本的命名空间。Rider IDE 有一个很好的方法来处理这个问题,强烈建议只为这个功能获取评估许可证。本教程逐步完成命名空间重构https://www.youtube.com/watch?v=vLrGdx-Ob3g只需确保在 Unity 中从 Edit > Preferences > External Tools > External Script Editor 切换您的 IDE。否则 Rider 将无法链接到 Unity,您将无法重构。

于 2021-01-11T02:35:07.457 回答