转载自原文:http://m.blog.csdn.net/blog/smbroe/43488627

1.如何动态创建对象:调用GameObject的CreatePrimitive方法可以按模型进行创建,PrimitiveType中可选的模型有,Cube(立方体),Sphere(球体),Capsule(胶囊),Plane(平原),Cylinder(圆柱);创建出的对象不需要Add之类的就可以显示出来

GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);<span style="font-family:宋体;">//指定游戏对象的位置

2.动态添加组件:通过AddComponent<Rigidbody>();可以为一个GameObject对象添加一个刚体组件,其中Rigidbody表示刚体,我们可以通过更改这个类型来为其添加不同的组件。当我们添加刚体组件后可以获得GameObject的rigidbody对象并对刚体进行设置

cubeObject.AddComponent<Rigidbody>();//为游戏对象添加刚体组件
cubeObject.rigidbody.mass = 0.5f;//设置刚体密度,默认为1
cubeObject.rigidbody.AddForce(Vector3.forward *);//为其施加向前的力

3.动态添加脚本:可以通过AddComponent方法并传入一个string类型对象(表示脚本的名称)来为GameObject对象动态添加脚本。

cubeObject.AddComponent("AutoDestory");//添加脚本文件AutoDestory

4.动态销毁对象:Destroy(cubeObject)是立即销毁游戏对象,Destroy(cubeObject,1)是延迟一秒销毁游戏对象

5.动态销毁脚本:Destroy(cubeObject.GetComponent(“AutoDestory”))销毁cubeObject对象上附加的脚。

6.一般我们在游戏对象不可见时会销毁或停止其动作,在其被摄像同捕捉到可见时执行其动作,这样我们可以复写其中的OnBecameInvisible方法(当游戏对象不可见时被执行),OnBecameVisible方法(当游戏对象可见时被执行)来达到上述效果。

using UnityEngine;
using System.Collections; //当游戏对象不可见时销毁
public class AutoDestory : MonoBehaviour
{ void OnBecameInvisible(){
Destroy (this.gameObject);
}
}

7.复制对象:在游戏中有时相同的对象会用到很多次,例如大量的子弹发射,如果利用复制对象的方法可以提高效率。调用GameObject的Instantiate方法返回一个Object对象进行强转可以得到复制的对象。

GameObject cubeClone = (GameObject) GameObject.Instantiate(cubeObject);

8.动态设置游戏对象的材质,为游戏对象添加贴图:我们可以通过cubeObject.renderer.material获得游戏对象的材质,并对其赋值即可,一般我们可以声明一个public的Material的成员变量,并赋给游戏对象,这样我们可以在Unity的编辑器中随时更改贴图。

using UnityEngine;
using System.Collections; public class Test : MonoBehaviour { public Material cubMeterial; // Use this for initialization
void Start () {
GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);
cubeObject.renderer.material = cubMeterial; } }

Unity3D基础--动态创建和设置游戏对象的更多相关文章

  1. 【Unity】6.3 通过 C# 脚本创建和访问游戏对象

    分类:Unity.C#.VS2015 创建日期:2016-04-16 一.简介 在游戏开发过程中,脚本不但需要访问脚本所在的游戏对象的组件,还经常需要访问和控制真他游戏对象.另外,根据项目需求,还可能 ...

  2. unity3d教程动态创建简单平面地形

    unity3d创建地形是不须要usingUnityEditor的.这里使用了AssetDatabase.所以需using UnityEditor; 创建三步: 1.TerrainData terrai ...

  3. Unity3D中动态创建编辑轴(点,线,圆,圆锥)

    问题分析: 最近在搞软件底层开发,将一些工具或者底层脚本打成dll导入unity使用,有这样一需求,就是编辑功能,需要像Scene场景一样,实现那种编辑轴 实现方式: 创建Mesh,构建编辑轴,这个地 ...

  4. Unity3D 中的面向对象设计 {游戏对象(创建、删除、获取),以及添加修改组件}

    一.创建游戏对象 游戏对象分三种:(1) 将物体模型等资源由Project工程面板拖拽到Hierarchy层次面板中 (2) 由GameObject菜单创建Unity自带的游戏对象,如Cube.Cam ...

  5. 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板

    [源码下载] 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板 作者:webabcd 介绍不可或缺 Window ...

  6. 使用Unity创建塔防游戏(Part3)—— 项目总结

    之前我们完成了使用Unity创建塔防游戏这个小项目,在这篇文章里,我们对项目中学习到的知识进行一次总结. Part1的地址:http://www.cnblogs.com/lcxBlog/p/60759 ...

  7. 使用Unity创建塔防游戏(Part1)

    How to Create a Tower Defense Game in Unity - Part1 原文作者:Barbara Reichart 文章原译:http://www.cnblogs.co ...

  8. Angular动态创建组件之Portals

    这篇文章主要介绍使用Angular api 和 CDK Portals两种方式实现动态创建组件,另外还会讲一些跟它相关的知识点,如:Angular多级依赖注入.ViewContainerRef,Por ...

  9. unity初始篇 选择游戏对象

    之前两任社长都在一直强调要写博客,一直没有写过,现在我已经踏上了博客的道路! 首先声明:本人才疏学浅,对unity认识不深,有错误的地方欢迎大家指出,在此谢过! 本文所说的选择对象,是指在游戏过程中动 ...

随机推荐

  1. 关于Cookie的 工具类

    import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; ...

  2. jQuery下通过$.browser来判断浏览器

    使用方法: $.browser.['浏览器关键字'] 代码如下: $(function() { if($.browser.msie) { alert("this is msie") ...

  3. 【Unity3D基础教程】给初学者看的Unity教程(五):详解Unity3D中的协程(Coroutine)

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 为什么需要协程 在游戏中有许多过程(Proc ...

  4. JavaScript 常用小功能

    判断一个是否是隐藏状态 $(curid).is(":visible") 响应回车 $("#password").keydown(function (e) {  ...

  5. C#动态编译并执行代码

    先来张运行时截图: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  6. HelloWorld[Java]

    public class HelloWorld{ public static void main(String args[]){ System.out.println("HelloWorld ...

  7. there are no usable controls in this group

    今天遇到一个怪事, MFC的toolbox是灰的, 不能使用, 后来上网一查找到解决方案: 右键Toolbox, 点击"Choose Items", 重新启动VS2013, 这样t ...

  8. Sql Server Analysis Service 转换为UnknownMember的正确设置 (转载)

    转载: http://www.cnblogs.com/OpenCoder/p/4754447.html#commentform 在SSAS中事实表数据被归类到为UnknownMember 的时候分为两 ...

  9. CentOS 6.5下配置iSCSI网络存储

    一.简介 iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行 SCSI协议,使其能 ...

  10. delphi locate多字段查询

    简单格式: IF MSQ_NewBillQuantity.Locate('FStockID;FMarchID', VarArrayOf([FStockID, FMarchID]), []) = Fal ...