文档章节

命名空间(namespace)

LIndieGS
 LIndieGS
发布于 2017/06/08 16:36
字数 540
阅读 6
收藏 0
点赞 0
评论 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 ⋅ 0

复习PHP-语言参考-命名空间

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

qzd1989 ⋅ 2014/05/02 ⋅ 0

PHP的命名空间

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

王二狗子11 ⋅ 01/07 ⋅ 0

PHP命名空间(Namespace)的使用详解

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

Surjur ⋅ 2015/02/12 ⋅ 0

PHP之新手自学基础知识(六)——拓展篇之命名空间

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

天谴残魂 ⋅ 01/09 ⋅ 0

PHP之命名空间

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

jjjssswww ⋅ 2017/06/06 ⋅ 0

php命名空间划重点

使用命名空间可以防止在定义常量、函数、类的时候,为了避免命名冲突而写出超长的变量名 define用于全局,使用更灵活(可以用变量、可以放到条件语句中) const用于类或者命名空间中 class内...

码上有春天 ⋅ 2016/12/22 ⋅ 0

c++中::的用法和命名空间

1.global scope(全局作用域) 比如int a; void test (){int a = ::a;//用全局变量a,给本地变量a赋值} 2.class scope(类作用域) 比如class A{public: } int A::test()//表示test是属于A的{re...

HeroHY ⋅ 03/04 ⋅ 0

eclipse编写XML需了解事项

本文简单介绍使用eclipse编写xml时需了解的几点: 1、xml的头是什么意思? 以编写Spring的配置文件为例来讲解xml头的含义:以下是spring一个最简单的配置 <beans //xml根元素,会根据需要而不...

Henrykin ⋅ 2016/11/03 ⋅ 0

.net 中 using的几种用法

1. using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。 例...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 55分钟前 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 58分钟前 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 今天 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 今天 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 今天 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部