Unity 泛型T的用法
2015-07-06 20:00
435 查看
大家好!我是小唐,今天做实例化对象的时候,想着项目多处需要实例化对象,功能相似,就想着写成一个公共的方法,但是不同的对象实例化后增加的脚本可能是不一样的,现在就考虑怎么把脚本也就是类作为参数进行传递,问了一下朋友,然后朋友告诉我说用泛型,然后自己就研究写了一下,分享给你们,写了一个泛型类和泛型方法。
using UnityEngine; using System.Collections;
//方式一:泛型类 public class ActivityManageData<T>:MonoBehaviour where T:MonoBehaviour { private T intance; public void InstantiateObj(GameObject obj,GameObject ParentObj,Vector3 vec3) { GameObject mObj = Instantiate (obj, vec3, Quaternion.identity) as GameObject; intance=mObj.AddComponent<T>(); mObj.transform.parent = ParentObj.transform; mObj.transform.localScale = Vector3.one; } }
//方式二:泛型方法 public class MyContent:MonoBehaviour { GameObject mObj; GameObject mParentObj; Vector3 mVec3; public MyContent(GameObject obj,GameObject ParentObj,Vector3 vec3) { this.mObj = obj; this.mParentObj = ParentObj; this.mVec3 = vec3; } public void InstantiateObj<T>(T t) where T:Component { mObj = Instantiate (mObj, mVec3, Quaternion.identity) as GameObject; mObj.AddComponent<T>(); mObj.transform.parent = mParentObj.transform; mObj.transform.localScale = Vector3.one; } }在调用的时候两种方式直接实例化对象给泛型T指定具体的类型就OK了。
相关文章推荐
- unity3d对象池的使用
- unity3d Panel之间的转换
- unity5.0利用自带UI制作滚动条
- Unity3D研究院之Time.timeScale、游戏暂停(七十四)
- 【Unity技能】做一个简单的NPC
- Unity3D自带例子AngryBots的分析
- Unity异步加载场景loading条
- 游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)
- UnityShader实例06:UV动画
- U3D经验总结
- unity3d开源Ultimate MMORPG插件技术文档渣翻译第3页
- unity3d 读取usb摄像头
- Unity3d Coroutine的Start和Stop
- Unity3D Lights
- 又开一坑,运动图形MoGraph for Unity
- Unity3d中UI开发的MVC模式
- unity3d实现相机对场景物体的旋转、缩放、平移查看功能、近似于scene下查看场景的效果
- Unity之depth与z轴的关系
- unity3D角色代码控制问题
- Unity FingerGestures 手势插件教程