gpt4 book ai didi

c# - MonoDevelop C# in Unity3D 试图理解 "Warning: type should be declared inside namespace AssembleCSharp"

转载 作者:行者123 更新时间:2023-12-04 16:55:49 25 4
gpt4 key购买 nike

在脚本文件夹中的 Assets 下,我试图定义一个简单的数据类:

文件:TirggerObject.cs

using UnityEngine;
public class TriggerObject {
public int TriggerID { get; set;}
public Vector2 Location { get; set;}
public float TriggerRadius { get; set;}
}

类名有一个与之相关的警告:“警告:类型应该在命名空间 'AssemblyCSharp' 内声明”

据我所知,AssembleCSharp 是定义类的地方。我看到的唯一奇怪的是 MonoDvelop 主 UI 中的解决方案文件树显示类文件:TriggerObject.cs 在程序集“Assembly-CSharp”中。虽然警告消息称其为“AssemblyCSharp”,但没有破折号。

我假设我可以忍受这个警告,因为代码似乎在运行。但是,我对 Unity 的程序集的了解如此之少感到震惊,而且我找不到这个确切警告的引用。我也没有找到任何关于为什么这还没有在正确的组装中或我如何将它放在正确的组装中的明确解释。

我讨厌不理解警告。

最佳答案

这是因为您的文件实际上位于 Unity 程序集中,但这一事实并未反射(reflect)在您的代码中。当您通过 Unity 的编辑器创建脚本时,恐怕这是 Unity 的“糟糕的自动实践”。当您通过 MonoDevelop 创建新文件时,会自动生成命名空间块。

该问题的解决方案是将命名空间块添加到您的文件中:

namespace AssemblyCSharp {

using UnityEngine;

public class TriggerObject {
public int TriggerID { get; set;}
public Vector2 Location { get; set;}
public float TriggerRadius { get; set;}
}
}

您实际上可以在命名空间块内部或外部放置“using”语句。 Read more about it here .

请注意,将命名空间部分添加到一个文件将迫使您修改所有依赖的代码文件(仅仅是由于类可见性)。

关于c# - MonoDevelop C# in Unity3D 试图理解 "Warning: type should be declared inside namespace AssembleCSharp",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42311021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com