C# 资产存储中FPS构造函数中的LightningBolt脚本

C# 资产存储中FPS构造函数中的LightningBolt脚本,c#,unity3d,C#,Unity3d,我已经从Asset Store下载了FPS构造函数,但是,它是为旧的Unity API制作的。我尝试过修复它,我基本上理解它,但我遇到了一个C脚本(我不熟悉C),不知道如何修复它! 以下是完整的脚本: using UnityEngine; using System.Collections; public class LightningBolt : MonoBehaviour { public Transform target; public int zigs = 100;

我已经从Asset Store下载了FPS构造函数,但是,它是为旧的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;
    }
}
使用UnityEngine;
使用系统集合;
公共级LightningBolt:单行为
{
公共转型目标;
公共int zigs=100;
公共浮子速度=1f;
公众浮标=1f;
公共灯尾灯;
[HideInInstitt]公共布尔发射=假;
柏林噪声;
把一个漂浮在锯齿上;
私有粒子[]粒子;
void Start()
{
一次过锯齿=1f/(浮动)锯齿;
particleEmitter.emit=false;
粒子发射器发射(zigs);
粒子=粒子发射器。粒子;
}
无效更新()
{
if(target==null)
返回;
如果(!发射){
返回;
}
endLight.intensity=1;
if(noise==null)
噪音=新柏林();
浮动时间x=时间时间*速度*0.1365143f;
浮动时间Y=Time.Time*速度*1.21688f;
浮动时间z=Time.Time*速度*2.5564f;
对于(int i=0;i=2)
{
如果(终点灯)
endLight.transform.position=粒子[particles.Length-1]。位置;
}
}   
无效发射费用(bool s){
发射=s;
endLight.intensity=0;
}
/*C
*/
无效目标(变换t){
目标=t;
}
}
这是错误截图。

如果您没有完全看到它-复制粘贴的描述:

  • Assets/Plugins/FPS Constructor V1/Demo Assets/Wearms/PlasmaBeam/LightningBolt.cs(24,19):错误CS1061:Type
    UnityEngine.Component
    不包含
    emit
    的定义,并且找不到类型
    UnityEngine.Component
    的扩展方法
    emit
    。是否缺少程序集引用

  • Assets/Plugins/FPS Constructor V1/Demo Assets/Wearms/PlasmaBeam/LightningBolt.cs(26,19):错误CS1061:Type
    UnityEngine.Component
    不包含
    Emit
    的定义,并且找不到类型
    UnityEngine.Component
    的扩展方法
    Emit
    。是否缺少程序集引用

  • Assets/Plugins/FPS Constructor V1/Demo Assets/Wearms/PlasmaBeam/LightningBolt.cs(27,31):错误CS1061:Type
    UnityEngine.Component
    不包含
    粒子的定义,并且找不到类型
    UnityEngine.Component
    的扩展方法。是否缺少程序集引用

  • Assets/Plugins/FPS Constructor V1/Demo Assets/Wearms/Plasma Beam/LightningBolt.cs(58,19):错误CS1061:Type
    UnityEngine.Component
    不包含
    粒子的定义,并且找不到类型
    UnityEngine.Component
    的扩展方法。是否缺少程序集引用

  • Assets/Plugins/FPS Constructor V1/Demo Assets/Wearms/Plasma Beam/LightningBolt.cs(60,23):错误CS1061:Type
    UnityEngine.Component
    不包含
    particleCount
    的定义,并且找不到类型
    UnityEngine.Component
    的扩展方法
    particleCount
    。是否缺少程序集引用


  • 在5.6中删除了Component.particleMitter。您应该使用GetComponent来获取particleMitter组件。添加这些行,它应该工作得更好:

    ParticleEmitter particleEmitter;
    
    void Start()
    {
        particleEmitter = GetComponent<ParticleEmitter>();   
    
    particlemitter particlemitter;
    void Start()
    {
    particleEmitter=GetComponent();
    

    如果其他任何东西不起作用,请告诉我!如果您运行Unity脚本升级程序,可能会有!

    “ParticleMitter”似乎没有在任何地方声明…你根本没有编辑代码?或者,哦,你运行unity升级了吗?
    组件。particleMitter
    在5.6中被删除:@Frederik我使用的是unity 5.5.1F1B,但unity升级程序可能删除了重要部分,因为组件。particleMitter在早些时候被拒绝,但实际上已完全删除在5.6中,如果你不立即删除内容,你会给人们一个在你实际删除之前停止使用它的机会。检查我的答案,我确信它会有所帮助。我使用了
    [hideininsett]public new Component particlemitter=GetComponent();
    ->failure按照我写的那样做。声明一个类变量named particlemitter,然后在Start()中用getcomponent设置它