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

上面简单看了Slider的内容

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

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

如上图,在左下角进度条满了的时候我希望由普通的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也可以,赋值上有所不同,但这里表面效果是相同的。

你可能感兴趣的:(Unity遇到问题记录)