在没有 "using" 语句的情况下在 Unity 中包含其他文件

Including other files in Unity without the "using" statement

我必须从 Unity 项目中集成某人的代码。

他们创建了一个定义 class 的文件,它是一个点数组,另一个文件使用第一个文件的 class.

问题:我在第二个文件的开头没有看到任何“using (nameOfTheFile)”:这怎么可能? 如何在第二个文件中使用第一个文件?

没有特别看到这些文件,我可以假设它们可能在同一个命名空间中。

A class 在具有 internalpublic 可见性时,隐式可以访问与自身相同命名空间下的同一程序集中的所有内容,因此这两个 class es 可能在同一个命名空间中并且可以相互访问。

// brain.cs
namespace Brain {
   public class A {
      public B InstanceOfB { get; set;}
   }
   public class B { }
}

如果两个 classes 在不同的文件中,这仍然有效,因此上面的内容与:

/// brain.A.cs
namespace Brain {
   public class A {
      public B InstanceOfB { get; set;}
   }
}


/// brain.B.cs
namespace Brain {
   public class B { }
}

最终,在将文件添加到您的项目时,您只需要为他们在代码中使用的命名空间添加 using 语句(using Brain; 上例)。

默认命名空间编辑:

为未在代码文件中指定的 classes 设置默认命名空间。您可以在 *.csproj 文件中的 <PropertyGroup> 中的 <Project> 元素(通常是文件中的第一个 PropertyGroup)中找到默认命名空间(称为 RootNamespace):

<!-- Brain.Common.csproj -->
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  ...
  <PropertyGroup>
    ...
    <RootNamespace>Brain.Common</RootNamespace>
    <AssemblyName>Brain.Common</AssemblyName>
    ...


另一种方法也可能是在一种超级 class 上使用 partial 关键字并将您的 class 实现为子 class ,例如

ScriptA.cs

public partial class SuperClass
{
    public class A { }
}

ScriptB.cs

public partial class SuperClass
{
    public class B 
    {
        public A = new A();
    }
}