Unity学习日常问题记录四 -- 改变进度条上的图标

来源:互联网 发布:淘宝u盘32g多少钱 编辑:程序博客网 时间:2024/06/10 19:05

上面简单看了Slider的内容

我想做一个改变Slider移动的图标变化的程序段,还真调了好几次

如上图,在左下角进度条满了的时候我希望由普通的Bomb(Sprite)变成BombReady(Sprite)。

这两个图片都是我把背景制作为透明,另存为png格式,这里如果photoshop另存里不出现png格式,那在图像-》格式里改成RGB 8位(32位不行),然后拖入Assets->Resources下,然后类型如图右上设为Sprite(2D and UI)。

代码如下

    public void UpdateBombState(){
        bombNum++;
        if (bombNum > bombSliderMaxNum)
            bombNum = bombSliderMaxNum;
        else if (bombNum == bombSliderMaxNum) {
            bombReady = Resources.Load ("BombReady",typeof(Sprite)) as Sprite;
            bombHandleTransform =  BombSlider.transform.FindChild("Handle Slide Area").FindChild("Handle");
            bombHandleTransform.GetComponent<Image> ().sprite = bombReady;
        }
        screenBar.UpdateScreen (bombNum);
    }

其中问题一

GameObject不能FindChild,必须.transform.同时FindChild只能找下一层的,如果有几层,要一层一层来。

Resources.Load会找Assets->Resources,同路径同名的资源(路径要写,文件后缀不用写,图中没设多层路径),类型要转换,因为此方法返回一个Object..

 bombHandleTransform.GetComponent<Image> ().sprite = bombReady; //是改变Image组件上Resource Image的值,还有这里写成overrideSprite = bombReady也可以,赋值上有所不同,但这里表面效果是相同的。

0 0