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

UnityScript实现立方体鼠标状态变色报错求助(BCE0044)

修复UnityScript鼠标交互颜色切换的语法错误

错误信息

kkjk.js(14,43): BCE0044: expecting :, found '='.

错误根源

这个语法错误由代码结构混乱导致,具体问题包括:

  • OnMouseOver、OnMouseDown函数内多了一对多余的大括号,打乱语法解析逻辑
  • if (Input.GetMouseButtonDown);末尾多了分号,直接终止if语句,且未传入鼠标按键参数(需传0表示左键)
  • 自定义的GetMouseButtonUp函数结构完全错误,代码块闭合位置混乱
  • 错误手动调用OnMouseDown和自定义函数,Unity的OnMouseXXX系列事件是自动触发的,无需手动调用

修复后的完整代码

#pragma strict

var cubeRenderer : Renderer;

function Start() {
    // 获取当前物体的Renderer组件
    cubeRenderer = GetComponent(Renderer);
}

// 鼠标悬停在物体上时触发
function OnMouseOver() {
    cubeRenderer.material.color = Color.green;
}

// 鼠标在物体上按下时触发
function OnMouseDown() {
    cubeRenderer.material.color = Color.red;
}

// 鼠标在物体上松开时触发
function OnMouseUp() {
    cubeRenderer.material.color = Color.blue;
}

核心修复点

  1. 移除所有多余的大括号和分号,修正函数结构
  2. 使用Unity内置的OnMouseUp事件函数,替代自定义的错误函数,Unity会自动触发该事件
  3. 统一使用提前获取的cubeRenderer变量,避免重复调用transform.renderer,提升效率
  4. 删除无用的public var Cube : GameObject;变量,直接操作当前物体的组件
  5. 移除错误的手动事件调用,依赖Unity自动触发的鼠标事件:
    • OnMouseOver:鼠标悬停在物体碰撞体上时持续触发
    • OnMouseDown:鼠标在物体碰撞体上按下时触发
    • OnMouseUp:鼠标在物体碰撞体上松开时触发

必要前提

确保你的立方体对象添加了碰撞体组件(如Box Collider),否则鼠标事件无法被检测到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:22:40