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

如何通过代码将Unity Sprite缩放到小数单位并与生成的Tile对齐

问题根因

你使用的256×256 Sprite将Pixels Per Unit设为256,所以它的原生世界单位尺寸为1×1。你当前直接给Tile对象设置localScale的逻辑方向是对的,但没有结合Sprite本身的尺寸做适配,同时可能存在Game视图渲染设置的干扰,导致缩小效果不符合预期。

修复方案

方案1:调整Transform缩放(适配现有逻辑)

在GridView中预先获取Sprite的原生尺寸,再根据cell_size计算正确的缩放系数,不需要修改其他逻辑:

  1. 给GridView类新增原生Sprite尺寸的私有变量,在构造函数中初始化:
public class GridView 
{
    // 新增变量
    private float _nativeSpriteSize;
    // 其余原有变量不变...

    public GridView(WorldGrid<float> wg, Sprite ts, GameObject parent)
    {
        world_grid = wg;
        tile_sprite = ts;
        // 新增:获取Sprite原生的世界单位宽度
        _nativeSpriteSize = tile_sprite.bounds.size.x;
        tiles = new Tile[wg.columns, wg.rows];
        wg.OnGridCellValueChanged += OnGridCellValueChanged;
        Create(parent);
    }
}
  1. 修改SpawnTile方法中的缩放计算逻辑:
private GameObject SpawnTile(int col, int row, Color color, GameObject parent, string label)
{
    GameObject g = new GameObject("C: " + col + " R: " + row);
    g.transform.position = world_grid.GetWorldPosition(col, row);
    // 修改缩放计算,适配Sprite原生尺寸
    float scale = world_grid.cell_size / _nativeSpriteSize;
    g.transform.localScale = new Vector3(scale, scale, 1f);
    g.transform.parent = parent.transform;
    return g;
}

方案2:直接修改SpriteRenderer尺寸(更稳妥,不影响子物体)

不需要修改Transform缩放,直接通过SpriteRenderer的属性调整Sprite大小,还能避免子物体(比如你用到的TextMesh)被连带缩放:
在Create方法中添加SpriteRenderer配置代码:

tile.sprite_renderer = tile.game_object.AddComponent<SpriteRenderer>();
tile.sprite_renderer.sprite = tile_sprite;
tile.sprite_renderer.color = color;
// 新增配置
tile.sprite_renderer.drawMode = SpriteDrawMode.Sliced;
tile.sprite_renderer.size = new Vector2(world_grid.cell_size, world_grid.cell_size);

同时把SpawnTile中设置localScale的代码删掉或者改成固定1:

g.transform.localScale = Vector3.one;

额外检查项

如果修改后还是出现Scene视图显示正确、Game视图显示异常的情况,检查两个配置:

  • 主相机如果挂载了Pixel Perfect Camera组件,关闭组件的「Run In Edit Mode」或者直接移除组件,像素完美模式会自动对齐小尺寸Sprite的像素,导致看起来没有缩小
  • Game视图顶部的缩放比例设置为1x,高比例预览会让小尺寸元素显示异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:15:03