本文章由cartzhang编写,转载请注明出处。 所有权利保留。
文章链接:http://blog.csdn.net/cartzhang/article/details/49363241
作者:cartzhang
### 开始:
关于Unity 5 中的例子缩放,搜索了半天竟然还有人说:
As far as I know that is not possible to do from code.
然后到官方找来了插件
https://www.assetstore.unity3d.com/cn/#!/content/4400
[Particle Scaler](https://www.assetstore.unity3d.com/cn/#!/content/4400)
这货居然还需要10刀。我表示很不满啊!
BTW: 官方下载10美刀的居然只能在编辑器中使用,在运行中然并卵的节奏还是让人疼啊!
### 方法:
然后功夫不负有心人!!!找到了解决方案。
之前代码上有个public void UpdateScale()
我不了解是不是之前的版本的函数。反正是现在没戏了。
做了简单修改,然后就大功告成了。
还是代码啊!
~~~
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ScaleParticles : MonoBehaviour
{
// @zpj default scale size;
public float ScaleSize = 1.0f;
private List<float> initialSizes = new List<float>();
void Awake()
{
// Save off all the initial scale values at start.
ParticleSystem[] particles = gameObject.GetComponentsInChildren<ParticleSystem>();
foreach (ParticleSystem particle in particles)
{
initialSizes.Add(particle.startSize);
ParticleSystemRenderer renderer = particle.GetComponent<ParticleSystemRenderer>();
if (renderer)
{
initialSizes.Add(renderer.lengthScale);
initialSizes.Add(renderer.velocityScale);
}
}
}
void Start()
{
gameObject.transform.localScale = new Vector3(ScaleSize, ScaleSize, ScaleSize);
// Scale all the particle components based on parent.
int arrayIndex = 0;
ParticleSystem[] particles = gameObject.GetComponentsInChildren<ParticleSystem>();
foreach (ParticleSystem particle in particles)
{
particle.startSize = initialSizes[arrayIndex++] * gameObject.transform.localScale.magnitude;
ParticleSystemRenderer renderer = particle.GetComponent<ParticleSystemRenderer>();
if (renderer)
{
renderer.lengthScale = initialSizes[arrayIndex++] *
gameObject.transform.localScale.magnitude;
renderer.velocityScale = initialSizes[arrayIndex++] *
gameObject.transform.localScale.magnitude;
}
}
}
}
~~~
### 使用:
建立一个空对象,把上面的名字为ScaleParticles.cs的拖拽到空对象上。把你需要的粒子效果作为一个子对象挂载到空对象上。
如下所示;
![](https://box.kancloud.cn/2016-03-09_56dfda859b617.jpg)
修改检视板中的scale size 大小,来修改粒子大小。
![](https://box.kancloud.cn/2016-03-09_56dfda85aaa40.jpg)
是不是很简单实用呢。
### 源码呢:
免分下载地址如下:
源码地址:http://download.csdn.net/detail/cartzhang/9207203
连接:[粒子缩放源码工程免分下载](http://download.csdn.net/detail/cartzhang/9207203)
-------------------------------------
### 就是这样。
若有问题,请随时联系!
非常感谢!!!
- 前言
- Unity随机Prefab,自动前往某点处理
- Unity导入FBX自动进行动画切分
- Unity5中的粒子缩放(附测试源码)
- Unity和虚幻的比较
- Unity 实现Log实时输出到屏幕或控制台上&lt;一&gt;
- Unity 实现Log实时输出到屏幕或控制台上&lt;二&gt;
- Unity的Json解析<一>--读取Json文件
- Unity的Json解析<二>–写Json文件
- Unity 的OCulus VR开发遇到的坑---OC版本差异
- Unity中一键创建常用文件夹
- Unity版本与虚拟现实头盔Deepoon大朋版本测试
- Unity 多场景打包
- Untiy中的数据平滑处理
- Unity中SendMessage和Delegate效率比较