7-18关于预制件和添加图片

本文介绍了Unity中动态加载资源Asset的原理和方法,重点讲解了如何使用loadRes API来加载resources目录下的资源。同时,提到了资源文件夹的管理,指出只有需要动态加载的资源才应放在特定的文件夹中,否则会在项目构建时被一并导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

resources 文件夹里面的资源,可以关联依赖到文件夹外部的其它资源,同样也可以被外部场景或资源引用到。项目构建时,除了已在 构建发布 面板勾选的场景外,resources 文件夹里面的所有资源,连同它们关联依赖的 resources 文件夹外部的资源,都会被导出。所以如果一份资源不需要由脚本直接动态加载,那么不用放在 resources 文件夹里。

动态加载 Asset

Creator 提供了 cc.loader.loadRes 这个 API 来专门加载那些位于 resources 目录下的 Asset。和 cc.loader.load 不同的是,loadRes 一次只能加载单个 Asset。调用时,你只要传入相对 resources 的路径即可,并且路径的结尾处不能包含文件扩展名。

// 加载 Prefab
cc.loader.loadRes("test assets/prefab", function (err, prefab) {
    var newNode = cc.instantiate(prefab);
    cc.director.getScene().addChild(newNode);
});

// 加载 AnimationClip
cc.loader.loadRes("test assets/anim", function (err, clip) {
    myNode.getComponent(cc.Animation).addClip(clip, "anim");
});

// 加载 SpriteAtlas(图集),并且获取其中的一个 SpriteFrame
// 注意 atlas 资源文件(plist)通常会和一个同名的图片文件(png)放在一个目录下, 所以需要在第二个参数指定资源类型
cc.loader.loadRes("test assets/sheep", cc.SpriteAtlas, function (err, atlas) {
    var frame = atlas.getSpriteFrame('sheep_down_0');
    sprite.spriteFrame = frame;
});


例子:
var personOb = {
            name:"神秘人",
            icon:"pic/map_person/NPC1",
            position:cc.p(100,-100)
        }
        this._buildPersonWithOb(personOb)
_addSpriteFrameToContainer:function(container, name){
        //动态添加图片
        container.spriteFrame = this.loadWaitImage
        cc.loader.loadRes(name, cc.SpriteFrame, function (err, atlas) {
            container.spriteFrame = atlas
            });
        //延迟动态添加图片
        //  container.spriteFrame = this.loadWaitImage
        // cc.loader.loadRes(name, cc.SpriteFrame, function (err, atlas) {
        //     setTimeout(function() {
        //         container.spriteFrame = atlas
        //     }, 1000);
            
        //});
    },
    
    _buildPersonWithOb:function(personOb){
         var that = this
         cc.loader.loadRes("prefab/person",function (err, prefab) {
            //实例化预制件
            var newNode = cc.instantiate(prefab);
            //延迟添加图片属性
            that._addSpriteFrameToContainer(newNode.getChildByName('pic').getComponent(cc.Sprite), personOb.icon)
            //给预制件添加图片属性
            // var container = newNode.getChildByName('pic').getComponent(cc.Sprite)
            // var atlas = personOb.icon
            // container.spriteFrame = atlas
            // newNode.getChildByName("pic").getComponent(cc.Sprite),personOb.icon
            //给预制件添加文本框属性
            newNode.getChildByName('name').getComponent(cc.Label).string = personOb.name
            //给预制件添加坐标
            newNode.setPosition(personOb.position)
            //给预制件添加到背景中
            that.NPC.addChild(newNode)


        })
    
    },
 
这是在resources里面的预存的图片和预制件的添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值