10183人加入学习
(109人评价)
UGUI整体解决方案-基础篇(Unity 2019.1.0f2)

2019-06-01

价格 免费
public class RawImageAni : MonoBehaviour {

    private RawImage _rawImage;
    private float _offsetX;
    private float _offsetY;
	// Use this for initialization
	void Start () {
        _rawImage = GetComponent<RawImage>();
        _offsetX = 1 / 4.0f;
        _offsetY = 1 / 2.0f;
        StartCoroutine(Ani());
	}

    private IEnumerator Ani()
    {
        float x = 0;
        float y = 0;
        while (true) {
            y += _offsetY;
            while (true) {
                x += _offsetX;
                _rawImage.uvRect = new Rect(x, y, _rawImage.uvRect.height,_rawImage.uvRect.width);
                yield return new WaitForSeconds(0.3f);
            }
        }
    }
	// Update is called once per frame
	void Update () {
		
	}
}

 

[展开全文]

UV坐标的概念。

帧动画图片上 

[展开全文]

这节的知识比较重要。

把image组件的 image type调整成filled形式

然后下面的参数可以实现不同的UI显示的隐藏的渐进效果。

技能冷却方式的实现可以在这里设置

 

[展开全文]

UI里image下的RayCastTarget选中之后才可以触发点击事件

[展开全文]

怎么实现把Canvas下面的所有图片都改变透明度呢?

为Canvas添加Canvas Group组件就可以了。然后调节这个组件下面的Alpha的值0到1之间就可以。

Canvas Group下面的其他属性还不太清楚。

[展开全文]

还不太懂 Blocking Object和Blocking Mask的实际应用

[展开全文]

Canvas下面的Graphic RayCaster是管理UI射线的组件,比如可以使一个按钮点击时高亮等。

Graphic RayCaster下的Ignore Reversed Graphic属性如果勾上的话可以保证在图片反转之后图片是不会交互响应的。

[展开全文]

Canvas属性下面的Reference Resolution设置的大小要和Game 窗口下的尺寸大小一样比如都是1920*1080

[展开全文]

Canvas画布下的Scale Factor属性可以针对当屏幕分辨率发生变化时依然不怎么影响UI适配的位置。是按比例的

void Start () {
        float wScale = Screen.width / 1920.0f;
        float hScale = Screen.height / 1080.0f;

        GetComponent<CanvasScaler>().scaleFactor = wScale;
	}

 

[展开全文]

有点没太理解

图片像素是128*128。

在图片的Inspector面板里有一个 pixel per Unity属性,即每一个unity单位有多少像素,100的话,也就是说128/100,这张图片占了1.28个Unity单位,然后在放到Canvas Scaler里面时,一个unity单位等于100个像素,所以又恢复到了128像素

[展开全文]

Canvas的三种渲染模式

第一种默认模式,Canvas默认是在摄像机的最顶层。

第二种模式,把需要拍摄物体的相机赋值Render Camera后,然后调整Plane Distance就可以调整三维物体和Canvas谁在相机前谁在相机后的问题。

第三种模式就是相当于把canvas看成是三维空间下的一个面片。可以在z轴上移动。

pixel perfect。为了防止像素出现偏差,在要求高的游戏中。开启了这个,抗锯齿就没用了。

Target Dispaly。显示层级,点击之后,在Game窗口下,可先选择不同的层级才能显示相应的物体。

[展开全文]

蓝图模式下,图片的旋转缩放不影响外面的画框。画框会固定住。虽然图片可以放大放小,但是实际的响应区域还是画框的区域。适用于动画很大,但是希望它的响应区域比较小。

正常模式下,画框会随着图片的大小变化而变化。

在原生编辑模式下,pivot是正值的话,图片相对于锚点是向左移动。同理可知pivot是负值的话。图片相对于锚点是向右移动的。

这两个按钮平时应用也不太广泛,也许某些特殊的需求,蓝图模式可以 

[展开全文]

获取UI宽高最安全的方式

normal模式下,在锚点分别分散固定到画布的四个角上的时候,它的sizeDelta属性就可以直接获取到宽高。

但是在Debug模式下,锚点分离就不可以这样了。

使用代码:

// Use this for initialization
    void Start () {
       RectTransform rect =transform.GetComponent<RectTransform>();
       rect.rect.width;
    }
    
    // Update is called once per frame
    void Update () {
        
    }

[展开全文]

car rect=trnasform.getcomponent<recttransform>();

rect.anchoredposition+=eventdata.delta

eventdata.delta可以反馈光标每移动一小格停留的坐标

这个方法有一定的误差

dragging

[展开全文]

clicktime

down获取的是上次点击的时间

click获取的是本次的时间

clicktime记录的是程序开始运行到点击的时间而不是点击中间隔的时间

[展开全文]

系统按键接口

iscrollhandler

isubmithandler

icancelhandler

imovehandler

 

[展开全文]

上节课:idrophandler,idraghandler,ipointerhandler

选择事件接口

iselecthandler

ideselecthandler

iupdateselecthandler

这些要搭配selectable组件才能使用

[展开全文]

click bug

  子物体上只有click接口,父物体有down和click,子物体和父物体的click都无法正常执行

 

解决办法:

给子物体也加上ipoint

[展开全文]

授课教师

课程特色

视频(61)
下载资料(1)