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

Unity中实现立方体单个面独立绘制的问题求助

Unity中实现立方体单个面独立绘制的问题求助

我正在做一个Unity项目,需要在立方体的每个面上独立进行绘制操作,但遇到了个头疼的问题——只要我在其中一个面上画东西,六个面会同时显示出相同的绘制内容。

我用一个Drawer脚本实现了绘制功能,这个脚本负责管理鼠标点击产生的绘制点,还通过插值处理来生成平滑的线条。不过目前看来,正是这个插值逻辑导致绘制的线条同步出现在了所有面上。
[绘制内容同步到所有立方体面的效果示意图]

下面是Drawer脚本里的相关代码片段:

// Relevant code snippet from the Drawer script
private void SetPixelsBetweenDrawPoints()
{
    while (drawPoints.Count > 1)
    {
        Vector2Int startPos = drawPoints.Dequeue();
        Vector2Int endPos = drawPoints.Peek();
        InterpolateDrawPositions(startPos, endPos);
    }
}

IEnumerator DrawToCanvas()
{
    while(true)
    {
        SetPixelsBetweenDrawPoints();
        yield return new WaitForSeconds(drawInterval);
    }
}

void InterpolateDrawPositions(Vector2Int startPos, Vector2Int endPos)
{
    int dx = endPos.x - startPos.x;
    int dy = endPos.y - startPos.y;
    float xinc, yinc, x, y;
    int steps = (Math.Abs(dx) > Math.Abs(dy)) ? Math.Abs(dx) : Math.Abs(dy);
    xinc = ((float)dx / steps) * interpolationPixelCount;
    yinc = ((float)dy / steps) * interpolationPixelCount;
    x = startPos.x;
    y = startPos.y;

    for(int k=0; k < steps; k += interpolationPixelCount)
    {
        canvasDrawOrEraseAt((int)Math.Round(x), (int)Math.Round(y));
        x += xinc;
        y += yinc;
    }
    canvasDrawOrEraseAt(endPos.x, endPos.y);
}

void AddDrawPositions(Vector2Int newDrawPos)
{
    drawPoints.Enqueue(newDrawPos);
}

我现在想修改这个脚本,让绘制操作只局限在当前点击的那个立方体面上,该怎么做呢?是要调整插值逻辑,还是有更合适的方法来处理立方体单个面的独立绘制需求?

希望能得到各位的见解和建议,非常感谢!

备注:内容来源于stack exchange,提问作者 ERICA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 12:55:28