【问题标题】:LightningBolt script in FPS Constructor from Asset Store来自 Asset Store 的 FPS Constructor 中的 LightningBolt 脚本
【发布时间】: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;
    }
}

这是错误截图。

如果您没有看到完整的内容 - 复制粘贴的说明:

  1. Assets/Plugins/FPS Constructor V1/Demo Assets/Weapons/PlasmaBeam/LightningBolt.cs(24,19):错误 CS1061:类型 UnityEngine.Component 不包含 emit 的定义并且没有扩展方法 emit可以找到UnityEngine.Component 类型的。您是否缺少程序集参考?

  2. Assets/Plugins/FPS Constructor V1/Demo Assets/Weapons/PlasmaBeam/LightningBolt.cs(26,19):错误 CS1061:TypeUnityEngine.Component 不包含 Emit 的定义并且没有扩展方法 Emit可以找到UnityEngine.Component 类型的。您是否缺少程序集参考?

  3. Assets/Plugins/FPS Constructor V1/Demo Assets/Weapons/PlasmaBeam/LightningBolt.cs(27,31):错误 CS1061:TypeUnityEngine.Component 不包含 particles 的定义并且没有扩展方法 particles可以找到UnityEngine.Component 类型的。您是否缺少程序集参考?

  4. Assets/Plugins/FPS Constructor V1/Demo Assets/Weapons/Plasma Beam/LightningBolt.cs(58,19):错误 CS1061:类型 UnityEngine.Component 不包含 particles 的定义,并且没有扩展方法 @987654339可以找到UnityEngine.Component 类型的@。您是否缺少程序集参考?

  5. 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 中已完全删除。您不会立即删除东西,而是在实际删除之前让人们有机会停止使用它。检查我的答案,我相信它会有所帮助。

标签: c# unity3d


【解决方案1】:

Component.particleEmitter 在 5.6 中被移除。您应该使用 GetComponent 来获取 ParticleEmitter 组件。添加这些行,它应该会更好地工作:

ParticleEmitter particleEmitter;

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

如果还有其他问题,请告诉我!如果您运行 Unity 脚本升级程序,那么可能会出现!

【讨论】:

  • 我使用了[HideInInspector] public new Component particleEmitter = GetComponent&lt;ParticleSystem&gt;(); -> 失败
  • 像我写的那样做。声明一个名为particleEmitter的类变量,然后在Start()中用getcomponent设置它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 2013-08-16
  • 2011-08-23
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多