Unity3D基础--动态创建和设置游戏对象
转载自原文: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基础--动态创建和设置游戏对象的更多相关文章
- 【Unity】6.3 通过 C# 脚本创建和访问游戏对象
分类:Unity.C#.VS2015 创建日期:2016-04-16 一.简介 在游戏开发过程中,脚本不但需要访问脚本所在的游戏对象的组件,还经常需要访问和控制真他游戏对象.另外,根据项目需求,还可能 ...
- unity3d教程动态创建简单平面地形
unity3d创建地形是不须要usingUnityEditor的.这里使用了AssetDatabase.所以需using UnityEditor; 创建三步: 1.TerrainData terrai ...
- Unity3D中动态创建编辑轴(点,线,圆,圆锥)
问题分析: 最近在搞软件底层开发,将一些工具或者底层脚本打成dll导入unity使用,有这样一需求,就是编辑功能,需要像Scene场景一样,实现那种编辑轴 实现方式: 创建Mesh,构建编辑轴,这个地 ...
- Unity3D 中的面向对象设计 {游戏对象(创建、删除、获取),以及添加修改组件}
一.创建游戏对象 游戏对象分三种:(1) 将物体模型等资源由Project工程面板拖拽到Hierarchy层次面板中 (2) 由GameObject菜单创建Unity自带的游戏对象,如Cube.Cam ...
- 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板
[源码下载] 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板 作者:webabcd 介绍不可或缺 Window ...
- 使用Unity创建塔防游戏(Part3)—— 项目总结
之前我们完成了使用Unity创建塔防游戏这个小项目,在这篇文章里,我们对项目中学习到的知识进行一次总结. Part1的地址:http://www.cnblogs.com/lcxBlog/p/60759 ...
- 使用Unity创建塔防游戏(Part1)
How to Create a Tower Defense Game in Unity - Part1 原文作者:Barbara Reichart 文章原译:http://www.cnblogs.co ...
- Angular动态创建组件之Portals
这篇文章主要介绍使用Angular api 和 CDK Portals两种方式实现动态创建组件,另外还会讲一些跟它相关的知识点,如:Angular多级依赖注入.ViewContainerRef,Por ...
- unity初始篇 选择游戏对象
之前两任社长都在一直强调要写博客,一直没有写过,现在我已经踏上了博客的道路! 首先声明:本人才疏学浅,对unity认识不深,有错误的地方欢迎大家指出,在此谢过! 本文所说的选择对象,是指在游戏过程中动 ...
随机推荐
- python ABC
因为项目需要,总是会有各种各样要重命名文件的场合,manual的方法当然不可取,bat的方法又感觉不够强大,所以就从零开始学python,就为了能够自动批量修改文件名,倒腾了一个周六,总算可以了 :) ...
- Ext.Net 学习随笔 003 超链接按钮
HyperlinkButton() 1.不带图标的普通超链接按钮 @(X.HyperlinkButton() .Text("简单样式") .OnClientClick(" ...
- 【转】Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
最近在看Java,在编译写书上一个例子时,由于书上的代码只有一部分,于是就自己补了一个内部类.结果编译时出现:No enclosing instance of type E is accessible ...
- C#(转自wiki)
C#是微软推出的一种基于.NET框架的.面向对象的高级编程语言.C#的发音为"C sharp",模仿音乐上的音名"C♯"(C调升),是C语言的升级的意思.其正确 ...
- HTTP长连接和短连接
1.HTTP协议的五大特点1)支持客户/服务器模式2)简单快速3)灵活4)无连接每次连接只处理一个请求,服务器处理完客户的请求,并受到客户的应答后,断开连接.5)无状态协议不会记录服务器客户端状态. ...
- 10天学会phpWeChat——第五天:实现新闻投稿功能
在前几讲里,我们逐渐实现了自己小模块的新闻列表展示.新闻详情展示功能,现在您已经初步有能力开发一个phpWeChat小模块了,本文将在已开发的hello world模块基础上,增加一个新的功能--新闻 ...
- mybatis 使用记录(二) 动态拼接查询条件
2016-12-16 阅读项目代码时,在项目的xml文件中发现如下写法: SELECT student_user_id FROM tbr_student_class WHERE 1=1 <if ...
- docker网络配置方法总结
docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...
- python学习笔记——1
python1.python处理单/双引号==>处理字符串中包含单引号==>"I'm kunkun"==>处理字符串中包含双引号==>'I am " ...
- day27_面向对象进阶
飒飒 : . . . . 六.描述符 1 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协 ...