免费国产网站_秋霞午夜一区二区三区视频_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;
        }
    }
    按照上面的方法, 畫進度條也是這個方法。 



    主站蜘蛛池模板: 国产女同互慰高潮流水视频_精品久久久久成人码免费动漫_亚洲国产成人久久一区_野草乱码一二三四区别_国产成人免费观看视频_亚洲日韩∨A无码中文字幕 | 99re久_一级一片免费视频_亚洲自拍偷拍色片视频_脱岳裙子从后面挺进去在线观看_久久精品国产99国产精品澳门_美女被操网站 免费观看一级视频_国产成人精品无码免费看在线_国产精品99_香蕉高清永久在线视频_亚洲97i蜜桃网_麻豆av播放 | 精品国产乱码久久久久久丨区2区_18禁男女污污污午夜网站免费_91亚洲精品久久_91精品国产综合久久久密臀九色_鸳鸯谱在线观看高清_国产亚洲精品久久久久久快乐8 | 免费看成一片_欧美久久天天综合香蕉伊_精品国产久九九_亚洲a∨无码一区二区_欧美精品一区二区三区很污很色的_久久久国产精品福利片 | 成人激情久久_性生交大片xx_免费网站啪啪_精品视频首页_国产伦精品一区二区三区免费观看_超碰人人做人人爱 | 一本久道热线_内射一面膜上边一面膜下边_亚洲成AV人在线视达达兔_毛片网站免费_亚洲精品国产精品乱码不99_日韩精品中文字幕有码无码 | 午夜精品久久18免费观看_在线看亚洲十八禁网站_色77久久综合网_亚洲国产一区二_最新av在线网站_亚洲啊v | 日本亚州视频在线八A_国产福利九一精品_武林外传免费观看_在线的av_国产精品小黄鸭一区二区三区_亚洲无码在线操 | 欧美一区二区一级片A_欧美成人aaaaaaaa免费_欧美视频国产视频_大陆国语对白国产av片_韩国av一区二区三区在线观看_福利视频一 | 18禁无码无遮挡h动漫免费看_国产中文字幕免费观看_99热播放_亚洲在线精品视频_亚洲欧美在线精品_在线播放的A站本免费少妇 亚洲天堂一_日韩欧美在线观看视频网站_波多野久久_特黄a级三级三级野战_国产91欧美情侣在线_99re6热在线精品视频播放速度 | 一区二区三区国产精品视频_伊人色合天天久久综合网_特级毛片在线大全免费播放_中文字幕乱码一区二区免费_www.久久爱.cn_国语自产拍在线视频普通话 | 亚洲成人夜色_女同一区_成人av日韩_十八女人毛片_成人免费超碰_x8x8拨牐拨牐x8免费视频8午夜 | 亚洲不卡视频一区二区_精品一区在线视频_久久久www免费人成人片_国产亚洲成av人在线观看导航_日韩中文字幕精品视频_jazzjazz国产精品 | 欧美极品视频一区二区三区_a级黄色影视_肉大捧一进一出免费视频_亚洲图片视频_伊人嫩草久久欧美站_亚洲AV成人片无码网站网 | 自拍偷拍国产精品_天天插日日操_国产黄色成人网_亚洲精品成人a_成人福利动态图啪啪gif看了吧_欧美人与动牲交A欧美 | 中文字幕日韩无_精品在线视频一区二区_免费在线看a_一个人看的www在线视频播放_日韩啊v在线_久精品视频在线观看 | 久久久久国产精品老师性教育影院_狠狠的日_超碰日韩_公侵犯一区二区三区四区中文字幕_天天爽夜夜骑_q2002日韩午夜伦高清 | 91tv在线_伊人毛片_蜜臀98精品国产免费观看_国产精品午夜福利_天天干人人射_国内国内在线自偷第68页 | 草逼视频网站_911精品国产亚洲日本美国韩国_国产精品色呦呦_四虎精品免费视频_蜜桃视频在线免费观看_国产一级中文字幕 | 97超碰人人做人人爽3d_黄色片免费看._免费观看日韩毛片_中文字幕在线观看视频网站_亚洲精品久久五月天堂_亚洲色偷偷综合亚洲AV伊人 | 黄色免费网站在线看_欧洲精品久久_啪啪午夜视频_国产成人综合亚洲色就色_国产超污视频在线观看_三个黑人上我一个 | 国产视频精品免费_精精国产xxxx视频在线野外_人人入人人爱_男女边摸边吃奶边做爽第9季_一级视频片_国产成人观看 | 艹逼逼网_特级xxxxx欧美孕妇_三年片免费观看_亚洲和欧洲一码二码区别7777_伊人久久大香线蕉AV波多野结衣_中国黄色片视频 | 精品一区二区国产在线观看_成人免费看片网站_久久久久国产精品人妻A_操操操插插插_国产精品一区二区三区四区视频_91mv.cool在线播放 | 国产淫片av片久久久久久_国产亚洲精品一区二三区_九一福利_中文字幕乱码英文字幕正常_黄网站色成年片大免费高清_男人扒开女人桶到爽中国的人 | 国内自拍视频网站_1024污_亚洲免费a视频_91视频欧美_久久久久久久久久久久久久动漫_久久无码喷吹高潮播放不卡 | 亚洲VA天堂VA欧美VA在线_亚洲AV国产AV综合AⅤ_久久精品夜色噜噜亚洲a∨_亚洲午夜久久久久久久_亚洲毛片在线免费_美女脱个精光露出尿口视频 | 国产一区二区三区亚洲_91久久在线_911免费国产自产在线观看_国产911情侣拍拍在线播放_欧美激情综合网_狠狠鲁狠狠操 免费a级毛片在线观看_欧美一区二区在线播放_亚洲精品国产欧美_男同GAY欧美GV在线观看_成人深夜_婷婷久久网 | 亚洲人成绝网站色www_国产福利在线视频_三年片在线观看免费大全爱奇艺_小明精品国产一区二区三区_一区二区亚洲精品_国产欧美日韩精品丝袜高跟鞋 | 毛片人妻_国产午夜精品久久久久_freerideoxxx性欧美_久久免费国产精品1_亚洲视频免费观看_国产精品毛片久久久久久久 | 少妇无码av无码专区在线观看_很嫩很紧直喷白浆在线_亚洲日本va中文字幕久久_国产精品内射视频免费_日日摸日日碰夜夜爽无_欧美三日本三级少妇三2023 日韩女同互慰一区二区_八戒午夜福利啪啪影视_天天搞av_在线中文字幕一区二区精品区_亚洲一区成人在线_69热视频 | 国产手机在线国内精品_靠比久久久_国产chinasex麻豆videos_成年人午夜视频_成人在线视频免费_国产男女猛烈无遮挡在线喷水 | av免费在线观看一区_国产精品九九热_欧美性猛交xxxx免费看久久久_欧美国产一区二区在线观看_又粗又硬又大又爽免费视频播放_av爱爱爱 | 台湾佬亚洲_在线看免费淫片_亚洲国产成人在线观看_国产精品久久无码不卡黑寡妇_欧洲女人牲交视频免费_91精品免费久久久 | 免费av国产_亚洲欧美在线免费观看_被老师叫到办公室跪着打手心_国内自拍偷第55页_6080yy午夜一二三区久久_国产a一级无码毛片一区二区三区 | 成人第一页_亚洲美乳中文字幕_老汉色av国产亚洲站长工具_蜜臀久久精品久久久久久酒店_女女久久_俺也去五月婷婷 | 欧美成人综合在线_无码人妻精品中文字幕免费东京热_米奇影视7777_成人AV一区二区三区无码金桔_超碰国产欧美人人_欧美色射 欧美极P品少妇的XXXXX_久久久亚洲欧洲日产国码606_亚洲新中文字幕_操鸡鸡视频_日韩AAA久久蜜桃AV_美女一级全黄大片 | 国语自产精品视频_www四色com_一区在线观看_亚洲乱码av一区二区三区中文在线:_黄色一级在线播放_久久五月丁香合缴情网 | 久久精品国产亚洲A片高清不卡_三级网站在线播放_一区二区三区四区激情_伊波拉病毒在线观看_亚洲中字在线_色一情一区二区三区 | 国产午夜在线视频不卡_中文精品一区_日日爱夜夜爽_人操人人_四虎成人在线观看_99久久久无码国产麻豆 | 亚洲综合国产成人无码_国产不卡免费av_人人妻碰人人免费_av免费观看网_成人亚洲网站_少妇裸体做受 |