文档章节

命名空间(namespace)

LIndieGS
 LIndieGS
发布于 2017/06/08 16:36
字数 540
阅读 8
收藏 0

原文链接:https://docs.unity3d.com/Manual/Namespaces.html

    当项目越来越大,脚本越来越多,脚本类名间发生冲突的可能性就越大。现实的游戏开发中,是数名程序员针对游戏不同的方面分别开发,但最后都会把各自的劳动成果汇总到一个项目里。但当一位程序员为游戏主角写控制他的代码时,另一位程序员写了相同的代码,用来控制敌人。它们两个可能都选择Controller来作为这个脚本里这个类的类名,当项目合并时,就可能导致冲突。

    在某种程度上,这个问题可以通过采用一套命名规则或重命名类来避免(比如 :命名为PlayerController和EnemyController)。可是,当好几个类都发生冲突,或者变量也用这些名字声明时,这就变得很麻烦。

    C#提供了一个叫命名空间(namespace)的特性,它能轻易的解决上面遇到的问题。命名空间是一个类的集合。下面的例子中,类Controller1和类Controller2是命名空间Enemy的成员:

namespace Enemy {
    public class Controller1 : MonoBehaviour {
        ...
    }
    
    public class Controller2 : MonoBehaviour {
        ...
    }
}

    在代码中,这两个类各自通过Enemy.Controller1和Enemy.Controller2的方式引用。这比在命名空间的范围内重命名类名要好的多(比如,没必要单独改变类名)。而且,你能使用多种命名空间来区分你的类,无论它们出现在哪,即使这些类在不同的源文件夹里都可以这样操作。

    你也可以不用每次都加命名空间的前缀,只需使用using关键字在代码的顶部就可以了:

using Enemy;

    这行代码表明类Controller1和 Controller2可以在Enemy这个命名空间中被找到,这等价于Enemy.Controller1,Enemy.Controller2。如果脚本需要引用的同名类来自不同的命名空间,那么前缀就是必须的了。如果两个命名空间包含了冲突的类名,当都直接用using关键字直接引用的话,编译器就会报错。

© 著作权归作者所有

共有 人打赏支持
LIndieGS
粉丝 0
博文 9
码字总数 6421
作品 0
程序员
私信 提问
C++ primer第二次阅读学习笔记(第17章:用于大型程序的工具:命名空间)

第十七章:用于大型程序的工具:命名空间 在一个给定的作用域中定义的每个名字,在该作用域中必须是唯一的。对庞大、复杂的应用程序而言,这个很难满足。由独立开发的库构成的复杂程序更有可能...

长平狐
2012/10/08
146
0
复习PHP-语言参考-命名空间

1.定义命名空间 命名空间只作用于类,函数,常量。(注意只能是const的常量,而不能是define出来的常量,我测试是报错的。) 通过namespace 声明。 必须在所有代码之前声明。 2.定义子命名空...

qzd1989
2014/05/02
0
0
PHP的命名空间

PHP的命名空间(namespace)是php5.3之后才有的。这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。 为什么php中要使用namespace? 假设如果不使用namespace,那么每...

王二狗子11
2018/01/07
0
0
PHP命名空间(Namespace)的使用详解

对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结。 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错...

Surjur
2015/02/12
0
0
PHP之新手自学基础知识(六)——拓展篇之命名空间

命名空间概述 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮...

天谴残魂
2018/01/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
7
0
求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
7
0
Mac Vim配置

1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下...

Pasenger
昨天
8
0
vmware安装Ubuntu上不了网?上网了安装不了net-tools,无法执行ifconfig?

1.重新设置网络适配器还是不行,如下指定nat 2.还需要指定共享网络,我是在无线环境下 3.无法执行ifconfig https://packages.ubuntu.com/bionic/net-tools到这个网站下载net-tools的deb文件...

noob_chr
昨天
4
0
解决SVN:E210007无法协商认证机制

svn:E210007 svn: Cannot negotiate authentication mechanism 执行下面代码即可 sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-ldap...

临江仙卜算子
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部