小唐的专栏

每一份收获,都带着我不懈的努力——小唐

Unity 泛型T的用法

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

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

阅读更多
个人分类: Unity技术
上一篇C# 标识类
下一篇Unity实例化对象的公共方法
想对作者说点什么? 我来说一句

泛型泛型集合类用法

2010年10月28日 35KB 下载

没有更多推荐了,返回首页

关闭
关闭