关闭

Unity 泛型T的用法

2772人阅读 评论(0) 收藏 举报
分类:

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

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:28631次
    • 积分:660
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:2篇
    • 译文:2篇
    • 评论:3条
    博客专栏
    最新评论