首页 > 解决方案 > 我在禁用组件时遇到错误

问题描述

我收到错误“Assets\ExplosionGun.cs(17,34): error CS1026: ) expected”。我已经尝试了很长时间,但一直无法找到解决方案。我正在使用 Visual Studio 和 Unity 引擎。

我的代码:

using UnityEngine;

public class ExplosionGun : MonoBehaviour
{

    public GameObject explosion; 
    public Camera cam;   
    
    public float force = 100000000000000000f;
    public float radius = 10000f;

    public TimeManager timeManager;

    void Update()
    {

        if(Input.GetButtonDown("Fire1");
           shoot();
           this.enabled = true;

    }
            
    void shoot()
    {
        RaycastHit _hitInfo;
        // If we hit something
        if (Physics.Raycast(cam.transform.position, cam.transform.forward, out _hitInfo))
        {
            // Create an explosion at the impact point
            Instantiate(explosion, _hitInfo.point, Quaternion.LookRotation(_hitInfo.normal));

            timeManager.DoSlowmotion(); 

            Collider[] colliders = Physics.OverlapSphere(_hitInfo.point, radius);

            foreach (Collider nearbyObject in colliders)
            {
                Rigidbody rb = nearbyObject.GetComponent<Rigidbody>();
                if (rb != null)
                {
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point, radius);
                    rb.AddExplosionForce(force, _hitInfo.point * 1000, radius);
                }
            }
        }
    }
}

标签: c#unity3d

解决方案


if(Input.GetButtonDown("Fire1");
   shoot();
   this.enabled = true;

那如果没有关闭)。它应该是:

if(Input.GetButtonDown("Fire1")) {
   shoot();
   this.enabled = true;
}

请注意我如何用括号替换您的;,以确保以下代码位于 if-Block 内。

该错误Assets\ExplosionGun.cs(17,34): error CS1026: ) expected准确地告诉了您需要做什么。您应该查看 C# 错误以及如何正确阅读和理解它们。


推荐阅读