Unity实例化对象的公共方法

原创 2015年07月07日 15:26:32

  大家好!我是小唐,最近写了一个实例化对象的公共方法,方便以后用的时候直接调用此方法,可以多处使用,自己根据自己的需求写的,不好还望多包含,一起学习一下吧。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class ActivityManageData<T>:MonoBehaviour where T:MonoBehaviour
{
	private T intance;
	/// <summary>
	/// 实例化对象的公共方法(用的时候直接调用此方法就可以了)
	/// </summary>
	/// <param name="obj">实例化的对象.</param>
	/// <param name="parentObj">实例化对象的父物体.</param>
	/// <param name="firstObjVec3">实例化第一个对象的位置.</param>
	/// <param name="distanceY">实例化对象间的Y坐标的差值.</param>
	/// <param name="instanteObj">实例化对象的数组.</param>
	public void InstantiateObj(GameObject obj,GameObject parentObj,Vector3 firstObjVec3,int distanceY,GameObject[] instanteObj)
	{
		int Count=parentObj.transform.childCount;
		GameObject mObj = Instantiate (obj) as GameObject;
		intance=mObj.AddComponent<T>();
		mObj.transform.parent = parentObj.transform;
		mObj.transform.localScale = Vector3.one;
		if (Count!=0) 
		{
			instanteObj[Count]=mObj;
			float objPosX=instanteObj[Count-1].transform.localPosition.x;
			float objPosY=instanteObj[Count-1].transform.localPosition.y-distanceY;
			float objPosZ=instanteObj[Count-1].transform.localPosition.z;
			Vector3 vec3=new Vector3 (objPosX,objPosY,objPosZ);
			mObj.transform.localPosition =vec3;
		}
		else
		{
			instanteObj[0]=mObj;
			mObj.transform.localPosition = firstObjVec3;
		}
	}
}

//调用
GameObject[] mInstanteObj=new GameObject[100];
ActivityManageData<VIPPackage> amd = new ActivityManageData<VIPPackage> ();
amd.InstantiateObj (mPackageObj, mVIPPackage, new Vector3 (0, 0, 0),150,mInstanteObj);
</pre><pre name="code" class="csharp">以后还会多多分享更多自己写的东西!
效果图:
<img src="http://img.blog.csdn.net/20150707153138069?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

[原创]unity3D学习【功能实现】之三:实例化

用处:一般当场景出现两个及两个以上,或者会出现重复的物体的时候,用实例化比较方便 目标:鼠标点击后,在鼠标点击的位置出现一个小球 涉及到:预制件,Instantiate(预制件,newVector...
  • vipzjh
  • vipzjh
  • 2016年08月17日 09:38
  • 2991

【Unity编辑器】Case:给选中对象添加组件,实例化对象

[MenuItem("Window/UnitZ/Component/Character/Player")] static void CreatePlayer () { ...
  • ych1995612
  • ych1995612
  • 2018年01月10日 15:20
  • 40

unity3d引用和实例化对象的方法

利用脚本组件的public变量把prefabs拖入到对象相应脚本组件的public变量中,如下图然后在脚本中写如下代码:public class explosionScript : MonoBehav...
  • wanglining1987
  • wanglining1987
  • 2017年07月13日 12:12
  • 1074

unity 实例化物体并成为某个物体的子物体

//首先先分配一个内存(随便起个名字都可以看需要)加载一个实例,这个实例名字就是我们需要的物体,这个物体必须是个预制体Prefab //接着将这个物体实例化成GameObject,让他具有GameO...
  • Sakuraoneme
  • Sakuraoneme
  • 2016年08月18日 20:47
  • 4189

Unity实例化Prefab in C#

将下面的脚本挂在摄像机上面即可,如果想实例化多个物体,可以用for循环来实现 1. 首先Expose一个属性到外部(方便拖拉Prefab到脚本上) [cshar...
  • woailvmengmeng
  • woailvmengmeng
  • 2013年09月05日 14:12
  • 2226

在Unity3D中动态创建对象和创建Prefab原型对象的三种方式

u3d里动态创建对象,需要使用prefab 而创建的时候 MonoBehaviour.Instantiate( GameObject orignal) 需要一个作为原型的对象。 本文提供三种方式获...
  • u012169685
  • u012169685
  • 2015年06月08日 10:39
  • 1646

Unity3D入门 第叁章:Prefabs(预设)与 Instantiate(实例化)

第叁章 Prefabs(预设)与 Instantiate(实例化) 解释:Prefabs(预设)是一种资源类型,可被重复使用的游戏对象。它可以被置入多个场景中,又或者能够在一个场景中被多次置入。当你...
  • Templar1000
  • Templar1000
  • 2013年06月02日 17:39
  • 16351

【Unity3D】利用预设、实例化Instantiate和协程完成生成器

生成器这东西在游戏中很常见,不如我们要随机产生敌人,就需要用到这东西。说白了,我就是需要一个东西在我的要求下,产生大量的对象。在Unity3D直接就提供接口能够轻松完成这一些,我开始还以为生成器是用U...
  • yongh701
  • yongh701
  • 2017年04月19日 18:07
  • 4663

Unity3D 动态实例化Prefab

之前写过一篇“Unity3D NGUI动态创建按钮”不少人按照我文章中介绍的方法来动态创建按钮,文章那种做法并不好。现在写一遍新的文章来教大家用Prefab的方式来动态创建NGUI按钮(也可以是任何G...
  • asd237241291
  • asd237241291
  • 2014年01月15日 17:31
  • 31243

关于在Unity中实例化脚本的问题

我们在学c#基础的时候,大家都知道想要获取一个实例类里面的公有成员,就必须在调用的时候实例化这个类。 比如有一个A类 class  A {   public int  age; } ...
  • qq_33632356
  • qq_33632356
  • 2017年10月23日 18:21
  • 259
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity实例化对象的公共方法
举报原因:
原因补充:

(最多只允许输入30个字)