You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity开发Flappy Bird类游戏时CS7036错误求助

解决Unity CS7036错误:调用addScore方法缺少必填参数

问题场景

作为Unity新手,跟着教程制作Flappy Bird类游戏时,遇到CS7036编译错误:调用LogicScript的addScore方法时缺少必填参数scoreToAdd。Visual Studio无报错提示,但Unity编辑器持续抛出该错误。

相关脚本代码如下:

PipeMiddleScript

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PipeMiddleScript : MonoBehaviour
{
    public LogicScript logic;

    void Start()
    {
        GameObject.FindGameObjectWithTag("Logic").GetComponent<LogicScript>();
    }

    void Update()
    {
        
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        logic.addScore();
    }
}

LogicScript

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class LogicScript : MonoBehaviour
{
    public int playerScore;
    public Text scoreText;

    [ContextMenu("Increase Score")]
    public void addScore(int scoreToAdd)
    {
        playerScore = playerScore + scoreToAdd;
        scoreText.text = playerScore.ToString();
    }

    [ContextMenu("Decrease Score")]
    public void removeScore()
    {
        playerScore = playerScore - 1;
        scoreText.text = playerScore.ToString();
    }
}

错误原因

  1. 参数缺失:LogicScript中的addScore方法定义了必填的int scoreToAdd参数,但PipeMiddleScript的OnTriggerEnter2D方法中调用logic.addScore()时未传入任何参数,触发CS7036错误。
  2. 组件未赋值:PipeMiddleScript的Start方法中获取了LogicScript组件,但未将其赋值给public LogicScript logic变量,后续调用logic.addScore()会触发空引用异常(当前错误被参数错误掩盖)。

修复步骤

步骤1:补充调用参数

修改PipeMiddleScript的OnTriggerEnter2D方法,传入分数值(比如每次过管道加1分):

private void OnTriggerEnter2D(Collider2D collision)
{
    logic.addScore(1);
}

步骤2:修复组件赋值

修改PipeMiddleScript的Start方法,将获取到的组件赋值给logic变量:

void Start()
{
    logic = GameObject.FindGameObjectWithTag("Logic").GetComponent<LogicScript>();
}

可选优化:添加默认参数

如果希望addScore方法支持无参数调用,可以给参数设置默认值,修改LogicScript中的方法定义:

[ContextMenu("Increase Score")]
public void addScore(int scoreToAdd = 1)
{
    playerScore = playerScore + scoreToAdd;
    scoreText.text = playerScore.ToString();
}

这样既保留了传入自定义分数的能力,也允许直接调用logic.addScore()使用默认值1。

内容的提问来源于stack exchange,提问作者vboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:12:02