cocos3.8.2如何加载jpg/png图片

对于 jpgpng这类基础图片文件,使用 resources.load直接加载为 SpriteFrame类型是不正确的

正确的加载流程

resources.load期望加载的是引擎已经识别并处理过的资源类型(如 Prefab, AnimationClip等)。而 jpg文件属于原始资产,引擎需要先将其转换为中间类型 ImageAsset,再生成 Texture2D,最后才能创建出 SpriteFrame

请参考以下修正后的代码:

loadBoxImage() {
    const boxImagePath = "main/box-1"; // 确保 resources/main/ 目录下有 box-1.jpg

    // 1. 首先,将图片作为 ImageAsset 类型加载
    resources.load(boxImagePath, ImageAsset, (err, imageAsset) => {
        if (err) {
            console.error("[ERROR] 加载 ImageAsset 失败:", err.message || err);
            return;
        }
        console.log("[SUCCESS] ImageAsset 加载成功!");

        // 2. 使用 ImageAsset 创建 Texture2D
        const texture = new Texture2D();
        texture.image = imageAsset;

        // 3. 使用 Texture2D 创建 SpriteFrame
        const spriteFrame = new SpriteFrame();
        spriteFrame.texture = texture;

        // 4. 将新建的 SpriteFrame 赋值给组件
        this.box.spriteFrame = spriteFrame;
        console.log("[SUCCESS] 宝箱 SpriteFrame 设置成功!");
    });
}

您需要在代码文件的顶部引入新增的类型:

import { _decorator, Component, Sprite, SpriteFrame, resources, ImageAsset, Texture2D } from 'cc';

Comments

No comments yet. Why don’t you start the discussion?

发表回复