public class RingBulletController : MonoBehaviour
{
    public int numberOfProjectiles; // 子弹数量
    public float projectileSpeed; // 子弹速度
    public GameObject ProjectilePrefab; // 子弹预制
    private Vector3 startPoint; // 子弹起始点
    private const float radius = 1F; // 子弹环形模式半径
    private float timer = 0f; // 子弹发射间隔计时器
    [SerializeField] private float firingRate = 1f; // 子弹发射间隔

    void Update()
    {
        timer += Time.deltaTime; // 计算子弹发射间隔
        if (timer >= firingRate) // 如果子弹发射间隔满足条件
        {
            startPoint = transform.position; // 设置子弹起始点
            SpawnProjectile(numberOfProjectiles); // 发射子弹
            timer = 0; // 重置子弹发射间隔计时器
        }
    }

    // 发射子弹
    private void SpawnProjectile(int _numberOfProjectiles)
    {
        float angleStep = 360f / _numberOfProjectiles; // 计算子弹发射角度步长
        float angle = 0f; // 子弹发射角度
        for (int i = 0; i <= _numberOfProjectiles - 1; i++) // 循环发射子弹
        {
            float projectileDirXPosition = startPoint.x + Mathf.Sin((angle * Mathf.PI) / 180) * radius; // 计算子弹X坐标
            float projectileDirYPosition = startPoint.y + Mathf.Cos((angle * Mathf.PI) / 180) * radius; // 计算子弹Y坐标
            Vector3 projectileVector = new Vector3(projectileDirXPosition, projectileDirYPosition, 0); // 计算子弹向量
            Vector3 projectileMoveDirection = (projectileVector - startPoint).normalized * projectileSpeed; // 计算子弹移动方向
            GameObject tmpObj = Instantiate(ProjectilePrefab, startPoint, Quaternion.identity); // 实例化子弹
            tmpObj.GetComponent<Rigidbody>().velocity = new Vector3(projectileMoveDirection.x, 0, projectileMoveDirection.y); // 设置子弹速度
            Destroy(tmpObj, 4F); // 销毁子弹(4秒后)
            angle += angleStep; // 增加子弹发射角度
        }
    }
}
public class RingBulletController : MonoBehaviour
{
    public int numberOfProjectiles; // 子弹数量
    public float projectileSpeed; // 子弹速度
    public GameObject ProjectilePrefab; // 子弹预制
    private Vector3 startPoint; // 子弹起始点
    private const float radius = 1F; // 子弹环形模式半径
    private float timer = 0f; // 子弹发射间隔计时器
    [SerializeField] private float firingRate = 1f; // 子弹发射间隔

    void Update()
    {
        timer += Time.deltaTime; // 计算子弹发射间隔
        if (timer >= firingRate) // 如果子弹发射间隔满足条件
        {
            startPoint = transform.position; // 设置子弹起始点
            SpawnProjectile(numberOfProjectiles); // 发射子弹
            timer = 0; // 重置子弹发射间隔计时器
        }
    }

    // 发射子弹
    private void SpawnProjectile(int _numberOfProjectiles)
    {
        float angleStep = 360f / _numberOfProjectiles; // 计算子弹发射角度步长
        float angle = 0f; // 子弹发射角度
        for (int i = 0; i <= _numberOfProjectiles - 1; i++) // 循环发射子弹
        {
            float projectileDirXPosition = startPoint.x + Mathf.Sin((angle * Mathf.PI) / 180) * radius; // 计算子弹X坐标
            float projectileDirYPosition = startPoint.y + Mathf.Cos((angle * Mathf.PI) / 180) * radius; // 计算子弹Y坐标
            Vector3 projectileVector = new Vector3(projectileDirXPosition, projectileDirYPosition, 0); // 计算子弹向量
            Vector3 projectileMoveDirection = (projectileVector - startPoint).normalized * projectileSpeed; // 计算子弹移动方向
            GameObject tmpObj = Instantiate(ProjectilePrefab, startPoint, Quaternion.identity); // 实例化子弹
            tmpObj.GetComponent<Rigidbody>().velocity = new Vector3(projectileMoveDirection.x, 0, projectileMoveDirection.y); // 设置子弹速度
            Destroy(tmpObj, 4F); // 销毁子弹(4秒后)
            angle += angleStep; // 增加子弹发射角度
        }
    }
}

以上代码有两个重复的类定义,应该合并为一个类。