Unity3d5.1简单配置及粒子效果的删除
2015-08-11 14:45
681 查看
因为工作需要,跑过来学习unity3d了,其实c++ 转c#还是较为简单的,基本上的语法差不多,只是一些格式写法的差别。同时看了下《太空射击》的视频教程作为入门,从仅有的经历来看,真是被unity的可视化界面和代码的封装性震惊了,全程代码量少的可怜,从获取键盘鼠标输入,到物理引擎各种方法和回调,全部都有封装好了的函数给你使用,只需要拖拖拉拉就把对象赋值和绑定,碰撞检测更是方便,逻辑上也没有cocos2dx的那么强烈的架构化,这点确实比cocos2dx要省去不少时间,甚至策划也能更方便的修改和操作。当然,对于屏幕适配和移植方面的暂时没有看。
配置过程如下:
1、安装unity5.1,到处都有,安装也没啥步骤,直接下一步。
2、安装项目导入vs的插件:https://visualstudiogallery.msdn.microsoft.com/20b80b8c-659b-45ef-96c1-437828fe7cf2
3、专业版破解:Unity 4.x Pro Patch,地址:http://download.csdn.net/detail/qq_16682993/8740523
4、安装vs2013:这个也不需要重复,其实也可以用自带的,但是不那么智能罢了。
5、下载锚点对齐脚本插件(随意):http://download.csdn.net/detail/zy19940906/8990405
over!(附注使用方法:把脚本直接拖进目录下,ctr+[ :锚点跟随到节点放大缩小和对齐 和 ctr +]:节点跟随到锚点放大缩小和对齐)。
一开始的时候想粒子系统里边应该会有自带的参数,应该有播放后自动释放的参数,然而并未找到,所以只能用代码了:
代码如下:
通过例子系统alive函数的实现可以知道,unity里边可以很容易的获取出该粒子的alive属性,所以我们可以通过该属性来判断何时该消除粒子:
这样就不用担心自己的内存问题了。
一、unity5.1的简单配置
从安装和配置上来看,就能感觉到unity3d较cocos2dx的便捷,cocos2dx光一个环境配置就给多少人带来难题:jdk,python2.7,vs,光建项目就得花去很大心思,之后安卓的sdk,ant,ndk等等一些列跨度太过庞大,当年2.1自学的时候,捣鼓打包apk好几天对着都搞不定,3.0出了之后就好弄多了,可惜版本更新太快,2.1-2.2-3.0,马上又要出4的样子了。配置过程如下:
1、安装unity5.1,到处都有,安装也没啥步骤,直接下一步。
2、安装项目导入vs的插件:https://visualstudiogallery.msdn.microsoft.com/20b80b8c-659b-45ef-96c1-437828fe7cf2
3、专业版破解:Unity 4.x Pro Patch,地址:http://download.csdn.net/detail/qq_16682993/8740523
4、安装vs2013:这个也不需要重复,其实也可以用自带的,但是不那么智能罢了。
5、下载锚点对齐脚本插件(随意):http://download.csdn.net/detail/zy19940906/8990405
over!(附注使用方法:把脚本直接拖进目录下,ctr+[ :锚点跟随到节点放大缩小和对齐 和 ctr +]:节点跟随到锚点放大缩小和对齐)。
二、粒子效果的智能删除
在看太空射击视频,发现里边的粒子效果都没人理会并且陨石也一直存在,运行时在对象层里能看到一排的粒子对象,并且越积越多,可能是习惯使然,总觉得不舒服,不删掉在大点儿的话也会造成内存问题,所以想了些小办法来解决粒子删除问题。一开始的时候想粒子系统里边应该会有自带的参数,应该有播放后自动释放的参数,然而并未找到,所以只能用代码了:
方法一、
给粒子模型绑定一个脚本,名字随意,代码较简单,运行后添加destory函数,附带一个时间参数,即隔多少秒后删除该粒子。代码如下:
using UnityEngine; using System.Collections; public class removeSe : MonoBehaviour { // Use this for initialization void Start () { Destroy(gameObject,2);//两秒后删除粒子系统 } void Update () { } }
方法二、
通过粒子系统的Alive属性判断 ,这里引用博客:/article/7893251.html的一段粒子系统底层代码。public bool IsAlive() { bool withChildren = true; return this.IsAlive(withChildren); } [csharp] view plaincopy public bool IsAlive(bool withChildren) { if (withChildren) { ParticleSystem[] particleSystems = ParticleSystem.GetParticleSystems(this); ParticleSystem[] array = particleSystems; for (int i = 0; i < array.Length; i++) { ParticleSystem particleSystem = array[i]; if (particleSystem.Internal_IsAlive()) { return true; } } return false; } }
通过例子系统alive函数的实现可以知道,unity里边可以很容易的获取出该粒子的alive属性,所以我们可以通过该属性来判断何时该消除粒子:
using UnityEngine; using System.Collections; public class removeSe : MonoBehaviour { // Use this for initialization void Start () { // Destroy(gameObject,2); } // Update is called once per frame void Update () { if( GetComponent<ParticleSystem>().IsAlive() == false) { Destroy(gameObject); } } }
这样就不用担心自己的内存问题了。
相关文章推荐
- Unity入口函数
- GameUnity 2.0 文档(四) 网格+四叉树 最优碰撞检测
- unity canvas text显示及其角色伤害TextMesh显示
- unity中的简单的协程用法。
- uLua学习笔记(三):Unity3D和Lua之间的相互调用
- 【整理】unity3d优化总结篇
- DoTween的小技巧
- 用Sublime Text 2 作IDE开发 Unity3D 项目(VinceLi)
- Unity3D 中 点乘和叉乘的应用
- 简单Unity时间架构设计(克洛诺斯之匙)
- Unity中创建二维码
- UNITY3D学习笔记14
- 【猫猫的Unity Shader之旅】之Vertex&Fragment Shader下的透明
- unity, UGUI Text fadeIn
- Unity2D学习笔记(一):sprite的基础操作
- [Unity3D]Unity3D发展偷看游戏初期阶段NGUI
- UNITY3D学习笔记13
- Visual studio 2015 community + Windows Driver Kit 10 +Vmware 11 配置驱动开发环境
- Unity3D中对象池的使用
- Unity中创建二维码