免费国产网站_秋霞午夜一区二区三区视频_99热在线看_日韩精品久久一区二区_午夜看一级毛片_天天鲁在视频在线观看

  • 您的位置:首頁 > 新聞動態 > Unity3D

    unity3d中利用網格+貼圖繪制血條/進度條

    2019/11/1??????點擊:

    利用網格去繪制血條, 血條肯定是一個矩形,網格是由一個一個三角形組成的,矩形可以分成兩個三角形。
    創建一個空物體,添加以下腳本組件:

    [RequireComponent(typeof(MeshFilter),typeof(MeshRenderer))]
    public class MeshAndUV : MonoBehaviour
    {
     
        private Mesh mh;
        private Renderer rd;
        private float size = 1;
        private Material mat;
        void Awake()
        {
            mh = GetComponent().mesh;
            rd = GetComponent();
        }
     
        void Start()
        {
     
           //頂點數組
            Vector3[] vertes  = new Vector3[]
            {
                new Vector3(-size, -size, 0),//第一個點
                new Vector3(-size, size, 0), //第二個
                new Vector3(size, size, 0), //第三個
                new Vector3(size, -size, 0), //第四個
            };
     
            mh.vertices = vertes;
     
            //頂點組成的三角形
            mh.triangles = new[]
            {
                0, 1, 2,
                0, 2, 3
            };
            mh.RecalculateNormals();
        }
    }
    運行下,就發現繪制出一個粉紅色的矩形,為啥是粉紅色,因為沒材質?。。。#¥%@#¥……

    在scene視圖下把ShadingMode改為Wireframe模式就可以看到兩個三角形

    軸點在中心,邊長為2的矩形,然后在腳本上設置UV映射,加上貼圖材質。

    在設置三角形下面添加一下代碼就可以顯示紋理了呀:

    //UV貼圖的四個點,和頂點一一對應,左下角為(0,0),右上角為(1,1)
    //如果頂點順序沒有跟UV對應,貼圖就會出現問題
    Vector2[] uvs = new Vector2[]
    {
        new Vector2(0,0),//第一個點
        new Vector2(0,1),//2
         new Vector2(1,1),//3
         new Vector2(1,0), //4
    };
    
     mh.uv = uvs;
     rd.material = mat;


    封裝成一個函數 void CreateBar(int barIndex),修改UV映射,血條索引從下往上數,每個間隔0.25f

    Vector2[] uvs = new Vector2[]
    {
         new Vector2(0, 0.25f * barIndex),//第一個點
         new Vector2(0, 0.25f * (barIndex+1)),//2
         new Vector2(1, 0.25f * (barIndex+1)),//3
         new Vector2(1, 0.25f * barIndex), //4
    };
    在Start方法調用 CreateBar(0),呀, 怎么紅色是滿的呢?

    由于滿血狀態是全紅的,所以在UV的x映射也要做下改變

    Vector2[] uvs = new Vector2[]
    {
         new Vector2(0, 0.25f * barIndex),//第一個點
         new Vector2(0, 0.25f * (barIndex+1)),//2
         new Vector2(0.5f, 0.25f * (barIndex+1)),//3
         new Vector2(0.5f, 0.25f * barIndex), //4
    };

    是不是有點像啦。只要改變下長寬比就好看啦。 改成下面這樣多一個參數試試看。


    void CreateBar(Vector2 size, int barIndex)
    {
        Vector3[] vertes = new Vector3[]
            {
                new Vector3(-size.x, -size.y, 0),//第一個點
                new Vector3(-size.x, size.y, 0), //第二個
                new Vector3(size.x, size.y, 0), //第三個
                new Vector3(size.x, -size.y, 0), //第四個
            };
    }
    看看血條效果吧:



    改變血條的值有2個辦法,
    1.改變Material的mainTextureOffset值
    mat.mainTextureOffset = new Vector2(0.2f,0);

    但是這樣會令到所以使用者材質的物體貼圖都會改變
    2.修改UV映射


    void SetBarRate(float value)
        {
            value *= 0.5f;
            Vector2[] uvs = new Vector2[]
            {
                new Vector2(value, 0.25f * barIndex),//第一個點
                new Vector2(value, 0.25f * (barIndex+1)),//2
                new Vector2(0.5f + value , 0.25f * (barIndex+1)),//3
                new Vector2(0.5f + value, 0.25f * barIndex), //4
            };
            mh.uv = uvs;
        }
    //因為這張圖一半是亮的,一半是暗的,暗的那部分代表失去的血量,所以value要乘以0.5;
    void Start()
        {
            CreateBar(new Vector2(1,0.25f),0 );
            SetBarRate(0.9f);
        }
    到此基本完成了任務, 下面來個完整的代碼給各位親參考一下, 歡迎來我們網站wiseglove.com投稿哦~



    using UnityEngine;
    using System.Collections;
     
    [RequireComponent(typeof(MeshFilter),typeof(MeshRenderer))]
    public class MeshAndUV : MonoBehaviour
    {
        private Mesh mh;
        private Renderer rd;
        
        private float rate = 0.5f;
        public Material mat;
     
        private int barIndex = 0;
        void Awake()
        {
            mh = GetComponent().mesh;
            rd = GetComponent();
           
        }
        void Start()
        {
            CreateBar(new Vector2(1,0.25f),0 );
            SetBarRate(0.9f);
        }
        ////// 利用網格創建血條
        //////三角形大小///血條索引void CreateBar(Vector2 size, int barIndex)
        {
            this.barIndex = barIndex;
            //頂點數組
            Vector3[] vertes = new Vector3[]
            {
                new Vector3(-size.x, -size.y, 0),//第一個點
                new Vector3(-size.x, size.y, 0), //第二個
                new Vector3(size.x, size.y, 0), //第三個
                new Vector3(size.x, -size.y, 0), //第四個
            };
            //給網格的頂點賦值
            mh.vertices = vertes;
     
            //頂點組成的三角形
            mh.triangles = new[]
            {
                0, 1, 2,
                0, 2, 3
            };
     
            //UV貼圖的四個點,和頂點一一對應,左下角為(0,0),右上角為(1,1)
            //如果頂點順序沒有跟UV對應,貼圖就會出現問題
            Vector2[] uvs = new Vector2[]
            {
                new Vector2(0, 0.25f * barIndex),//第一個點
                new Vector2(0, 0.25f * (barIndex+1)),//2
                new Vector2(0.5f , 0.25f * (barIndex+1)),//3
                new Vector2(0.5f , 0.25f * barIndex), //4
            };
            mh.uv = uvs;
            //材質
            rd.material = mat;
            //法線重新計算
            mh.RecalculateNormals();
        }
        ////// 設置血條比例
        //////血量失去的百分比void SetBarRate(float value)
        {
            value *= 0.5f;
            Vector2[] uvs = new Vector2[]
            {
                new Vector2(value, 0.25f * barIndex),//第一個點
                new Vector2(value, 0.25f * (barIndex+1)),//2
                new Vector2(0.5f + value , 0.25f * (barIndex+1)),//3
                new Vector2(0.5f + value, 0.25f * barIndex), //4
            };
            mh.uv = uvs;
        }
    }
    按照上面的方法, 畫進度條也是這個方法。 



    主站蜘蛛池模板: 国产精品欧美日韩一区二区_男女高潮又爽又黄又无遮挡_在线观看免费高清av_中文人妻av久久人妻水蜜桃_99精品又大又爽又粗少妇毛片_亚洲无限资源 | 国产日韩在线看片_亚洲一区二区中文_欧美乱人伦中文字幕在线_99精品欧美_久久午夜综合久久_天天骑天天射 | 国产成人剧情AV麻豆果冻_www成人免费_日一区二区_被触手玩弄狠狠侵犯男男_国产剧情一区二区_欧美一道本一区二区三区 | 人人爱人人添_欧洲性XXXX免费视频在线观看_国产精品久久久久久久天堂_深夜福利视频在线观看_欧美色视频一区_欧美国产专区 | 一级黄色a大片_成年视频在线观看免费_少妇午夜一级艳片欧美精品_久久9热_亚洲欧美国产国产一区二区三区_国产xxxxav 国产高潮白浆喷水_久久精品99av高久久精品_av网站网址在线观看_91麻豆久久久_18禁人看免费无遮挡网站不卡_午夜成人性刺激免费视频 | 少妇特黄a一区二区三区_色精品视频_欧美午夜一区二区三区免费大片_日本国产网站_亚洲第一av网站_亚洲国产成人久久一区二区三区 | 四虎视频在线精品免费网址_青草青草久热国产精品_免费在线亚洲_www一片黄_最色www_国产女上位疯狂榨精合集 | 国产一级黄大片_国产精品18久久久久白浆软件_亚洲国模私拍人体gogo_国产69精品久久久久9_免费女女同黄毛片AV网站_91插插视频 | 国产精品123区_欧美人与性动交α欧美精品_www.黄色_青青青国产免费线在_欧美视频中文字幕_国产亚洲高清视频你懂 | 欧美日韩久久久_亚洲日韩在线观看免费视频_午夜av影视_成人免费视_国v1区区免费线观看_亚洲成在人网站av天堂 | 国产精品99久久久久久大便_国产成人免费ā片在线观看_亚洲大片一区_乌克兰丰满女人a级毛片右手影院_九九色在线_欲妇荡岳丰满少妇岳 | 国产精品123区_欧美人与性动交α欧美精品_www.黄色_青青青国产免费线在_欧美视频中文字幕_国产亚洲高清视频你懂 | 人人妻人人澡人人爽欧美一区双_少妇久久久久久被弄到高潮_mm131美女视频毛片_精品久久久无码中字_78摸在线观看_4虎影院在线观看 | 中文字幕十一区_曰本黄色一级片_亚洲爆乳成AV人在线视菜奈实_国产国语对白露脸_青青草免费视频在线看_国产精品2 | 欧美日韩在线视频免费观看_96精品在线视频_天天艹日日艹_国产精品亚洲欧美一区麻豆_亚洲AV人人爽人人夜蜜桃_放荡的少妇2欧美版 | 狠狠色综合色综合网站久久_公牛巨鞭大战人妻H_久久www免费人成_看片中文_久草在线综合网_欧美18videosex性欧美亅izz4_久久伦理中文字幕 | 国产亚洲精品成人a在线_aaa久久_91色亚洲_日本人真淫视频一区二区三区_久久久xx_久久久久成人精品无码中文字幕 | 一级女人裸体舞毛片_福利影院在线_国产一区xxx_噼里啪啦国语高清免费观看在线_在线观看日韩_欧洲AV无尺码 | 91porny丨首页入口在线_久久毛毛片_国产日产一区二区三区久久久久久_正在播放一区_久久高清一区二区_久久精品国产亚洲AV无码麻豆 | 亚洲久久_国产一区二区三区四区老人_噜噜久久噜噜久久鬼88_一个人免费视频观看在线www_日韩一卡2卡3卡4卡新区亚洲_国产精品久久久久久久久丝袜 | 婷婷综合缴情亚洲AV_日日夜夜爱_国产精品久久精品第一页_免费麻豆视频_国产欧美一区二区三区精品观看_欧美黄色片一区二区 | 精品国产乱码久久久久久丨区2区_18禁男女污污污午夜网站免费_91亚洲精品久久_91精品国产综合久久久密臀九色_鸳鸯谱在线观看高清_国产亚洲精品久久久久久快乐8 | 超碰公开97_无码精品人妻一区二区三区98_亚洲av日韩av高潮无码专区_天天看av_97碰成人国产免费公开视频_91性色 | 女人荫蒂添的好舒服A片_免费无码AV片流白浆在线观看_日本人妻精品免费视频_国产午夜精品福利_国产精品红桃视频_综合色视频 | 天天成人综合网_国产精品福利在线_天天操人人要_人人妻人人添人人爽日韩欧美_青娱乐成人_欧美极品网站 | 看毛片看毛片_亚洲午夜精品久久久久久浪潮_欧美在线www_中年好声音3粤语免费观看_久久久久久久久久久视频_高清在线视频 | 特级生活片_51社区xxx免费视频_国产护士囗交吞精视频_亚洲中文字幕无码永久_中文字幕欧美亚州视频免费_91网页在线观看 | 亚洲国产精品VA在线观看黑人_亚洲国产欧美在线人成aaaa20_国产精品久久久久一区二区_国产无套码AⅤ在线观看在线播放_中文字幕久久久人伦_人妻少妇AV无码一区二区 | 日韩www视频_久久超碰97人人做人人爱_午夜手机在线_久久国产美女视频_欧美成人在线直接看视频网站_两个人看的www免费视频中文 | 成人黄网站A片免费观看_日韩一区日韩二区_国产色一区二区_欧洲色在线_久久亚洲精品无码Va白人极品_狠狠色噜噜狠狠狠狠aV不卡 | 日日夜夜狠狠_国产精品羞答答_亚洲中文字幕人成乱码_久久精品国产99久久6动漫欧_九一久久精品_欧美v国产v亚洲v日韩九九 | 伊人久操视频_日日躁夜夜躁xxxxaaaa_亚洲av无码成人精品区日韩_涩涩在线观看_久久九九色_久久的爱久久的你在线观看 | 蜜桃视频在线观看网站_欧美性妇_国产精品另类_无码超级大爆乳在线播放_国产乱子伦视频在线观看_亚洲av在线一区二区三区 | 婷婷中文字幕一区三区_免费视频a级毛片免费视频_在线黄色av_天天综合久久_成人黄色免费播放_欧美一区二区最爽乱淫视频免费看 | v片免费看_玩弄人妻少妇精品视频_毛片免费全部无码播放_久久久久免费精品_77777亚洲午夜久久多人_日欧一级片 | 亚洲精品久久无码AV片俺去也_久久久不卡国产精品一区二区_影音先锋资源站男人网_国产精品成品人品_久久国产劲暴∨内射_日韩一区二区三区国产 | 国产SUV精品一区_中文字幕日韩欧美精品高清在线_另类视频一区_亚洲av午夜福利精品一区人妖_免费人成视频x8x8国产_岛国黄色片 | 5x社区未满十八在线视频_和岳每晚弄的高潮嗷嗷叫视频_国产精品19p_aaa色视频_91免费福利_99久久久精品 贪婪欲望之岛在线观看_1769免费视频在线观看_免费aa毛片_久久精品在线观看视频_亚洲性爱之日本精品视频_亚洲欧美日韩综合aⅴ | 日韩一级片播放_88国产精品视频一区二区三区_亚洲AV超碰爽死狠狠热_av在线免费播放网址_欧洲性片_美女网站亚洲一区 | 一区二区三区视频在线播放_五月婷婷久久综合_久久色成人在线_AV激情亚洲男人的天堂国语_草草CCYY免费看片线路_皇上从小侵犯双性太子NP高H | 久久青青色综合_高清不卡亚洲_jzjzz成人免费视频_91福利影院在线观看_日日夜夜免费视频_6080亚洲人久久精品 |