首页 新闻 会员 周边 捐助

lua脚本中如何动态加载Resources下的图片资源?

0
悬赏园豆:15 [待解决问题]
require "View/Good";

luanet.load_assembly("UnityEngine");
Resources = luanet.import_type("UnityEngine.Resources");
Sprite = luanet.import_type('UnityEngine.Sprite');

GoodItem = {};
local this = GoodItem;

local good;--当前盒子显示的物品


local sprite; -- UGUI上的Image组件
local number; -- UGUI上的text组件

function GoodItem.Init(go,good) 
    -- body
    if(go == nil or good == nil) then
        return;
    end
    gameObject = go;
    transform = gameObject.transform;

    sprite = transform:FindChild("Photo"):GetComponent("Image");
    number = transform:FindChild("Number"):GetComponent("Text");

    print(sprite.name);
    print(number);

    -- 将Resources中的图片资源加载进来,并且赋值给UGUI中的Image
    sprite.overrideSprite = Resources.Load(good._icon);

    number.text = good._number;

end

如代码中最下面的注释处,Resources.Load(good._icon);我想将指定图片名字的图片加载进来,加载没有问题,可以加载想要的图片,就是赋值一直没有反应,所以在想lua中有没有像c#脚本中那样使用as强转成Sprite类型的方法(百度了只找到了tolua.cast()这个方法,但是说我的cast是nil值,我想这是不是应该是我的是ulua环境造成的?)?所以来园子求个大神指导指导~~O(∩_∩)O谢谢

风人的主页 风人 | 初学一级 | 园豆:132
提问于:2017-08-11 13:24
< >
分享
所有回答(1)
0

解决办法1:用c#自定义一个简单加载Resources下的Sprite的工具,如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

namespace UnityEngine{
    /// <summary>
    /// 自定义一个工具类
    /// </summary>
    public class InstanceTool{

        /// <summary>
        /// 加载Resources文件下制定路径及名字的Sprite图片
        /// </summary>
        public static Sprite ResourcesSprite(string path)
        {

            return Resources.Load<Sprite>(path);
        }


    }

}

然后在lua脚本中引用这个静态方法就行了

-- 引入自定义的工具类
InstanceTool = luanet.import_type('UnityEngine.InstanceTool');

--中间省略,跟原文所贴代码一样,就不贴过来了

-- 调用工具类中的加载图集的办法赋值给Image
sprite.sprite = InstanceTool.ResourcesSprite( good._icon);

这样可以得到想要的结果,但问题就是:如果加载的类型太多,那工具里面就得定义很多个对应类型的加载方法。

解决这个最简单的就是引入泛型,但lua中要怎么传入泛型?又是一个问题,先学习去~~

风人 | 园豆:132 (初学一级) | 2017-08-12 09:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册