Unity 泛型T的用法

来源:互联网 发布:淘宝福利群真的省钱吗 编辑:程序博客网 时间:2024/05/12 21:59

  大家好!我是小唐,今天做实例化对象的时候,想着项目多处需要实例化对象,功能相似,就想着写成一个公共的方法,但是不同的对象实例化后增加的脚本可能是不一样的,现在就考虑怎么把脚本也就是类作为参数进行传递,问了一下朋友,然后朋友告诉我说用泛型,然后自己就研究写了一下,分享给你们,写了一个泛型类和泛型方法。

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了。

0 0