码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3D游戏开发之使用场景Ⅰ:建立类型映射

时间:2015-03-10 10:26:37      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:3d游戏开发   unity3d培训   unity3d游戏   

     欢迎来到unity学习unity培训unity企业培训教育专区,这里有很多Unity3D资源Unity3D培训视频Unity3D教程Unity3D常见问题Unity3D项目源码,【狗刨学习网】unity极致学院,致力于打造业内unity3d培训、学习第一品牌。


总的来看,Unity的使用场景主要有以下几个:

  • 建立类型映射
  • 用于单例模式
  • 用于依赖注入

接下来,将逐一介绍各使用场景。


       在创建对象时,毫无疑问,类型映射是我们无法回避的一个问题,同时也是一系列工厂模式的根本出发点。类型映射,为面向对象设计的根本原则——“针对接口编程,而不是针对实现编程”、“要依赖抽象,不要依赖具体类”——在应用中的实现,提供了有力的支持。

我们知道,Unity提供了对象的容器,那么这个容器是如何进行索引的呢?也就是说,容器内的单元是如何标识的呢?在Unity中,标识主要有两种方式,一种是直接使用接口(或者基类)作为标识键,另一种是使用接口(或者基类)与名称的组合作为标识键。键对应的值就是具体类。


  • 用接口类型作为标识键

      实际上,之前给出的例子,就是接口类型作为标识键的一个使用场景,这里就不再重复。

      这里需要指出的是,Unity提供的功能都有泛型和非泛型两个版本,这样可以确保 Unity 在不支持泛型的环境中使用。我们在代码中可以使用任意一种方法(泛型和非泛型),或者根据需要混合使用。例如,可以使用泛型形式来注册映射,然后使用非泛型形式去获取对象实例。

下面的代码演示了非泛型形式的使用:


技术分享

技术分享


ps:接下来的例子以及后续文章中的例子将不再演示非泛型形式的使用。

  • 用基类作为标识键

用基类作为标识键,在本质上与用接口类型作为标识键是一样的。这里需要注意的是,基类并不一定是指抽象类。下面是使用基类作为标识键的例子:


技术分享

技术分享


技术分享


有趣的是,这里如果直接container.RegisterType();的话,是可以Resolve出来的,但是如果我们container.RegisterType();的话,运行时就会报异常了。

  • 用接口(或基类)与名称的组合作为标识键

如果需要使用同样的接口(或基类)注册多个映射,可以指定名称来区分每个映射。在需要Resolve的时候,通过指定接口(或基类)与名称的组合作为标识键,就可以获取恰当类型的对象。下面的例子以接口与名称的组合为例,基类与名称的组合作为标识键同理,不再赘述(有关Ilogger等代码:


技术分享

技术分享


这里需要指出的是,注册名称是一个字符串,如果需要,可以包含空格。它们是大小写敏感的。例如,名称“Mymapping”和“MyMapping”将指的是二个不同的注册映射。

更多内容,请访问【狗刨学习网】unity极致学院 http://edu.gopedu.com  

Unity3D游戏开发之使用场景Ⅰ:建立类型映射

标签:3d游戏开发   unity3d培训   unity3d游戏   

原文地址:http://blog.csdn.net/book_longssl/article/details/44171691

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!