美文网首页
学习完毕UGUI课程

学习完毕UGUI课程

作者: Tea_R | 来源:发表于2019-01-28 00:00 被阅读0次
    2019-01-27

    课程链接

    角色界面
    1.学习了角色界面的书写:

    主要学习使用了toggle组件的各种使用方式,点击装备,血药,蓝药,分别显示不同的窗口


    控制不同窗口
    2.学习了编写mytoggle脚本进行控制开关
    关卡选择
    3.学习了滚动界面的设计:

    在拖动结束后缓缓停止
    通过点击toggle来控制滚动
    通过滚动来控制toggle选中


    窗口横向滚动控制代码

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.EventSystems;
    using UnityEngine.UI;
    public class level_Scroll : MonoBehaviour,IBeginDragHandler,IEndDragHandler//实现接口
    {
        private ScrollRect scrollRect;
        private float[] pageArray = new float[] { 0, 0.333333f, 0.666666f,1 };//定义翻页数组
        float temp;
        float target = 0;//目标位置
        bool needModify = false;
        //拖拽开始
        public Toggle[] tog;
        
        // Start is called before the first frame update
        void Start()
        {
            scrollRect = GetComponent<ScrollRect>();
            
        }
    
        // Update is called once per frame
        void Update()
        {
                if (needModify == true)
                {
                    if (Mathf.Abs(scrollRect.horizontalNormalizedPosition - target) < 0.0000001f)
                    {
                        needModify = false;
                        print(2);
                        print(target);
                        print(scrollRect.horizontalNormalizedPosition);
                    }  
                    scrollRect.horizontalNormalizedPosition = Mathf.Lerp(scrollRect.horizontalNormalizedPosition, target, Time.deltaTime * 5);
                    
                 }
        }
        public void OnBeginDrag(PointerEventData eventData)
        {
        }
        //拖拽结束
        public void OnEndDrag(PointerEventData eventData)
        {
            temp = scrollRect.horizontalNormalizedPosition;//获取拖动结束的水平值
            if (temp < (pageArray[0] + 0.1666f))
            {
                target = pageArray[0];
                tog[0].isOn = true;
            }
            else if (temp < (pageArray[1] + 0.1666f))
            {
                target = pageArray[1];
                tog[1].isOn = true;
            }
            else if (temp < (pageArray[2] + 0.1666f))
            {
                target = pageArray[2];
                tog[2].isOn = true;
            }
            else
            {
                target = pageArray[3];
                tog[3].isOn = true;
            }
            needModify = true;//开始修正
        }
        public void MoveToPage1(bool isOn)
        {
            if (isOn)
            {
                target = pageArray[0];
                needModify = true;
            }
                
        }
        public void MoveToPage2(bool isOn)
        {
            if (isOn)
            {
                target = pageArray[1];
                needModify = true;
            }
        }
        public void MoveToPage3(bool isOn)
        {
            if (isOn)
            {
                target = pageArray[2];
                needModify = true;
            }
        }
        public void MoveToPage4(bool isOn)
        {
            if (isOn)
            {
                target = pageArray[3];
                needModify = true;
            }
        }
    }
    

    mytoggle控制开关代码:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    public class mytoggle : MonoBehaviour
    {
        public GameObject tog_on;
        public GameObject tog_off;
        private Toggle tog;
        // Start is called before the first frame update
        void Start()
        {
            tog = GetComponent<Toggle>();
            OnValueChange(tog.isOn);
        }
    
        // Update is called once per frame
        void Update()
        {
            
        }
        public void OnValueChange(bool isOn)
        {
            tog_on.SetActive(isOn);
            tog_off.SetActive(!isOn);
        }
    }
    
    
    今日任务完成,结束了传说中用来热手用的入门期

    从下周(明天)开始U3D的正式学习期
    https://blog.csdn.net/qq_22521529/article/details/83108837这个帖子的步骤进一步学习U3D

    计划

    可以暂时作修整,抽一些时间学习其他东西,U3D占得时间这几天还是略微算多,多几天时间看一个短视频,这几天还是先学一下后台和微信吧http://www.sikiedu.com/course/90

    代码部分(代码,与外语一样,都是一门语言,都是用于交流的工具,只不过外语是跟人交流,而代码是跟机器交流的,学会了代码你才能真正开始控制电脑,让他帮你工作;放心,代码是世界上最简单的外语,比学英语相比不知道简单了多少倍。)

    物理系统(因为现实中的真正真实的物理,实在是太难模拟了(想象一下摩擦力),所以程序员使用了“碰撞器”,来大致模拟现实中的物理效果(如你去台球厅打球,人用球杆用力击打白色球,这个球撞到其他球时,可以打飞其他球。这种“打飞”其他球的效果使用了碰撞器来实现。))

    UI部分 UI是我认为的Unity中最简单最容易上手的一部分了,基本不需要写任何代码,拖拖拽拽很容易就OK了。(可能有人听过NGUI,我简单解释一下,NGUI是过去人们用的非Unity官方制作的UI系统,现在已经不像过去那么流行了,个人不建议学习,当然,有兴趣者可以看看,不过UGUI一定要会)

    动画系统(如果你不希望你做出来的游戏都是一堆不会动的“僵尸”,就好好学这的内容。这里放上的视频链接为3D模型的动画系统)
    需要学习的量有点大,有一定难度。不过我还是那句话,不要用脑子记,抄笔记。

    光照系统 (不过多解释)

    粒子系统(这里我就不多解释什么是粒子系统了,打开视频链接,自己看吧)

    DOTween动画插件

    相关文章

      网友评论

          本文标题:学习完毕UGUI课程

          本文链接:https://www.haomeiwen.com/subject/igxojqtx.html