【发布时间】:2017-04-06 17:32:10
【问题描述】:
我已经从 Asset Store 下载了 FPS Constructor,但是它是为较旧的 Unity API 制作的。我尝试修复它,我基本了解它,但是我遇到了一个 C# 脚本(我对 C# 不熟悉)并且不知道如何修复它! 这是完整的脚本:
using UnityEngine;
using System.Collections;
public class LightningBolt : MonoBehaviour
{
public Transform target;
public int zigs = 100;
public float speed = 1f;
public float scale = 1f;
public Light endLight;
[HideInInspector] public bool emits = false;
Perlin noise;
float oneOverZigs;
private Particle[] particles;
void Start()
{
oneOverZigs = 1f / (float)zigs;
particleEmitter.emit = false;
particleEmitter.Emit(zigs);
particles = particleEmitter.particles;
}
void Update ()
{
if(target == null)
return;
if(!emits){
return;
}
endLight.intensity = 1;
if (noise == null)
noise = new Perlin();
float timex = Time.time * speed * 0.1365143f;
float timey = Time.time * speed * 1.21688f;
float timez = Time.time * speed * 2.5564f;
for (int i=0; i < particles.Length; i++)
{
Vector3 position = Vector3.Lerp(transform.position, target.position, oneOverZigs * (float)i);
Vector3 offset = new Vector3(noise.Noise(timex + position.x, timex + position.y, timex + position.z),
noise.Noise(timey + position.x, timey + position.y, timey + position.z),
noise.Noise(timez + position.x, timez + position.y, timez + position.z));
position += (offset * scale * ((float)i * oneOverZigs));
particles[i].position = position;
particles[i].color = Color.white;
particles[i].energy = 1f;
}
particleEmitter.particles = particles;
if (particleEmitter.particleCount >= 2)
{
if (endLight)
endLight.transform.position = particles[particles.Length - 1].position;
}
}
void EmitCharge (bool s) {
emits = s;
endLight.intensity = 0;
}
/* C
*/
void Target (Transform t) {
target = t;
}
}
如果您没有看到完整的内容 - 复制粘贴的说明:
Assets/Plugins/FPS Constructor V1/Demo Assets/Weapons/PlasmaBeam/LightningBolt.cs(24,19):错误 CS1061:类型
UnityEngine.Component不包含emit的定义并且没有扩展方法emit可以找到UnityEngine.Component类型的。您是否缺少程序集参考?Assets/Plugins/FPS Constructor V1/Demo Assets/Weapons/PlasmaBeam/LightningBolt.cs(26,19):错误 CS1061:Type
UnityEngine.Component不包含Emit的定义并且没有扩展方法Emit可以找到UnityEngine.Component类型的。您是否缺少程序集参考?Assets/Plugins/FPS Constructor V1/Demo Assets/Weapons/PlasmaBeam/LightningBolt.cs(27,31):错误 CS1061:Type
UnityEngine.Component不包含particles的定义并且没有扩展方法particles可以找到UnityEngine.Component类型的。您是否缺少程序集参考?Assets/Plugins/FPS Constructor V1/Demo Assets/Weapons/Plasma Beam/LightningBolt.cs(58,19):错误 CS1061:类型
UnityEngine.Component不包含particles的定义,并且没有扩展方法 @987654339可以找到UnityEngine.Component类型的@。您是否缺少程序集参考?Assets/Plugins/FPS Constructor V1/Demo Assets/Weapons/Plasma Beam/LightningBolt.cs(60,23):错误 CS1061:类型
UnityEngine.Component不包含particleCount的定义并且没有扩展方法 @987654343可以找到UnityEngine.Component类型的@。您是否缺少程序集参考?
【问题讨论】:
-
"particleEmitter" 似乎没有在任何地方声明...您根本没有编辑代码吗?或者哦,你有没有运行统一升级的东西?
-
Component.particleEmitter在 5.6 中被删除:link -
@Frederik 我正在使用 Unity 5.5.1f1
-
但由于 Component.particleEmitter 早先被废弃,但统一升级程序可能删除了重要部分,但实际上在 5.6 中已完全删除。您不会立即删除东西,而是在实际删除之前让人们有机会停止使用它。检查我的答案,我相信它会有所帮助。