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

Unity构建游戏报错:‘ObjectNames’在当前上下文不存在的咨询

问题原因
  • ObjectNames是UnityEditor命名空间下的类,这类API仅能在Unity编辑器环境中运行,当你构建游戏时,Unity会自动剔除编辑器相关的代码与程序集,导致构建后的代码找不到该类,从而抛出CS0103错误。
  • 你代码里虽然引入了using UnityEditor;,但构建过程中这个命名空间的内容不会被打包进最终游戏包,等于无效引用。
替代实现方案

自己写一个和ObjectNames.GetUniqueName逻辑一致的方法,就能在构建后的游戏中正常运行:

public string GetUniqueName(string[] existingNames, string baseName)
{
    // 基准名称为空时默认用"Object"
    if (string.IsNullOrEmpty(baseName))
        baseName = "Object";
    
    // 先检查基准名是否未被占用
    if (!existingNames.Contains(baseName))
        return baseName;
    
    // 循环递增数字后缀,直到找到未被使用的名称
    int count = 1;
    string newName;
    do
    {
        newName = $"{baseName} ({count})";
        count++;
    } while (existingNames.Contains(newName));
    
    return newName;
}

然后修改你的Start方法:

void Start()
{
    string uniqueName = GetUniqueName(names, "");
}
额外提醒
  • 这个自定义方法在编辑器和运行时环境下都能正常工作,不需要额外做环境区分。
  • 记得维护好names数组,确保它始终包含当前所有已被占用的名称,否则会生成重复名字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:15:45