C#泛型在unity3D中的运用.
2015-06-06 17:26
525 查看
泛型是什么?
这是摘自百度百科中对泛型的介绍:
?
看过之后,会用的还是懂;不会用的,也还是不懂。
所以我们还是看看泛型具体在程序中的应用:
这只介绍了泛型方法的使用。还有泛型类,泛型接口等,在此就不多说了。
用C#开发unity3D游戏用的最多的泛型应该还是泛型集合List<T>之类的,这些就靠平时慢慢熟悉了。
http://www.cnblogs.com/wiyi/archive/2013/02/19/2917275.html
这是摘自百度百科中对泛型的介绍:
?
所以我们还是看看泛型具体在程序中的应用:
//泛型方法 //unity3D中用的最多的泛型方法应该是GetCompent<T> //T就是占位符,当调用这个方法的你要告诉编译器,这个T的具体类型。 //另外,"T"只是一个标识,完全可以用其他代替,如"K","MyType"等,只是使用习惯。 //比如: GameObject player; Animator animator; void Start() { //在场景中找到名为MyPlayer物体 player = GameObject.Find("MyPlayer"); //获取该物体上的Animator组件 animator = player.GetComponent<Animator>(); //对于使用AddComponent<T>()、GetCompent<T>()这两个泛型方法来说,需要了解的就是:T就是你想要的具体的组件类型。 //对于泛型方法来说,泛型的作用就是占位和约束的作用。 } //下面来说声明泛型函数 /// <summary> /// 比较等级; /// </summary> /// <returns> /// 若t1>=t2的等级,则返回true;否则返回false /// </returns> /// where T : IRole where K : IRole的作用是约束传入的两个参数类型必须要实现IRole这个接口; /// 这样就定义好了一个泛型方法 public bool CompareLevel<T,K>(T t1, K t2) where T : IRole where K : IRole { //因为泛型t1,t2都被约束需要实现接口,所以我们可以强制转换到IRole来获取level比较 return ((IRole)t1).level >= ((IRole)t2).level; } //那么怎么使用呢? //接下来看: public void Test() { //先定义三个测试用的类型 MyNPC npc =new MyNPC(); MyPlayer player =new MyPlayer(); MyMonster monster =new MyMonster(); //对各个类型的level赋值 npc.level =1; player.level =2; monster.level =3; //比较npc和player的level就很简单了,只需要这样调用即可 bool b1 = CompareLevel<MyNPC,MyPlayer>(npc,player); //npc?payer//false bool b2 = CompareLevel<MyNPC,MyMonster>(npc,monster);//npc?monster//false bool b3 = CompareLevel<MyPlayer,MyMonster>(player,monster);//payer?monster//false } public interface IRole { int level{get;set;} } public class MyPlayer:IRole { public int level{get;set;} } public class MyNPC:IRole { public int level{get;set;} } public class MyMonster:IRole { public int level{get;set;} }
这只介绍了泛型方法的使用。还有泛型类,泛型接口等,在此就不多说了。
用C#开发unity3D游戏用的最多的泛型应该还是泛型集合List<T>之类的,这些就靠平时慢慢熟悉了。
http://www.cnblogs.com/wiyi/archive/2013/02/19/2917275.html
相关文章推荐
- Unity 飞机大战增强版
- 【经验】Unity读取Excel数据并绑定到Prefab上
- Unity3D帮助文档跳转缓慢----Vim编辑器批量替换文件内容
- 【Unity3D】自动寻路(Nav Mesh Agent组件)
- [Unity实战]框选效果
- unity3D 旋转3D物体
- Unity3D添加天空盒
- [Unity基础]GL图像库
- [UnityShader]使用Unity Render Textures实现画面特效——建立画面特效脚本系统
- Unity3D教程:动画融合、动画层、动画混合、附加动画、程序动画、动画重放和取样
- unity手游开发--如何得到当前物体播放的动画
- Unity3D 项目用 git 做版本控制
- Unity5 如何做资源管理和增量更新
- InvokeRepeating("PlaySound",2.0f,0.5f) 2秒后每隔0.5秒调用
- [Unity3D]自己动手重制坦克舰队ArmadaTank
- Unity3d读取CSV中的文本到Rich Text中换行符不识别的问题
- 如何将Unity工程打包成apk
- Unity 5.0 IL2CPP
- Unity3D摄像机跟随人物
- Unity3d NGUI的drawcall,UISprite与UITexture