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

Unity中无法获取GameObject网格:代码报错求助

问题修复方案

错误原因解析

  • 第一个错误:你在Start()方法里给局部变量加了private修饰符,这是C#语法错误——局部变量不能用private/public这类访问修饰符。另外,就算把platformMesh改成类的字段,也不能在字段初始化时直接引用platform(非静态字段),因为字段初始化的时机早于Unity的组件赋值流程,此时platform还没被赋值。
  • 第二个错误:因为第一个语法错误导致编译器代码解析混乱,才会误报缺少闭合大括号。

修正后的代码

根据你的需求分两种情况:

情况1:platformMesh只在Start()方法内使用

public class ObjectSelector : MonoBehaviour
{
    public GameObject platform;

    void Start()
    {
        // 去掉private,直接声明局部变量
        Mesh platformMesh = platform.GetComponent<MeshFilter>().mesh;
        // 这里可以添加使用platformMesh的代码
    }
}

情况2:platformMesh需要在其他方法中使用(声明为类的字段)

public class ObjectSelector : MonoBehaviour
{
    public GameObject platform;
    // 声明为类的私有字段,不在初始化时赋值
    private Mesh platformMesh;

    void Start()
    {
        // 在Start里完成赋值,此时platform已经被Unity赋值
        platformMesh = platform.GetComponent<MeshFilter>().mesh;
    }
}

额外提示

建议加空值判断,避免platform未赋值或没有MeshFilter组件时报错:

void Start()
{
    if (platform == null)
    {
        Debug.LogError("platform未赋值!");
        return;
    }

    MeshFilter meshFilter = platform.GetComponent<MeshFilter>();
    if (meshFilter == null)
    {
        Debug.LogError("platform上没有MeshFilter组件!");
        return;
    }

    platformMesh = meshFilter.mesh;
}

内容的提问来源于stack exchange,提问作者Samuel Bélanger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:48:19