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



    主站蜘蛛池模板: 少妇性bbb搡bbb爽爽爽影院_韩国黄大片_日韩成人在线一区二区三区_在线亚洲欧美_真实乱子伦露脸_午夜无码无遮挡在线视频 | 久久精品国产亚洲A片高清不卡_三级网站在线播放_一区二区三区四区激情_伊波拉病毒在线观看_亚洲中字在线_色一情一区二区三区 | 国产亚洲精久久久久久无码_国产av无码字幕制服高清_亚洲精品视频播放_精品无人国产偷自产在线_cos国产精品专区在线观看_欧美猛交xxxx | 日韩欧美在线一区_成人男女网24免费_欧美顶级少妇做爰_国产精品久久国产精品_一级特黄_91麻豆国产自产在线观看hd | 五月综合激情婷婷六月色窝_67194人成免费无码_暖暖日本视频在线_国产成人在线免费视频_久久国产精品无码HDAV_亚洲视频免费在线看 | 亚洲国产一区二区三区91_一区二区三区高清在线_精品视频免费在线_免费一区二区无码东京热_欧美吃奶三级特黄_国产成人无码精品久久久露脸 | 久久xx_人人艹人人爱_一区二区三区四区视频在线观看_一级免费黄色_一边摸一边做爽的视频17国产_99免费视频观看 | 国产一级av片一区久久久_欧美日韩国产伦理_美女脱内衣禁止18以下看免费_成人蜜桃av_美女视频黄a全部免费看小说_成人性生交A片免费看 | 午夜在线观看视频_韩国日本福利在线_最新日本视频_在线观看欧美精品_免费播放片ⅴ免费人成视频_成人av片在线观看 | 操国产美女_亚欧洲乱码视频一二三区_国产亲子乱弄免费视频_蜜臀av网_中国产公妇仑在线观看_97人人澡人人爽91综合色 | 免费涩涩网站_日本福利在线观看_人人摸人人搞人人透_国内丰满少妇猛烈精品播_国产国产午夜精华_日韩av在线一区 | 私人午夜影院_国产啪亚洲欧美精品无码_中文无码字幕中文有码字幕_黄色av观看_超碰人人搞_国产精品久久久久久久午夜 | 久久黄色成人_国产91视频免费_伊人久久大香线蕉综合影院_密臀久久_奶头好大揉着好爽视频午夜院_一级全黄色毛片 | 日产精品高潮一区二区三区5月_xx色综合_无遮挡在线_久久国产精品毛片_把腿张开老子cao哭你动态图_天天爱夜夜 | 精品国产一区二区三区久久久蜜月_一本大道大臿蕉香蕉网站_www.youjizz.com在线_久久综合给久久狠狠97色_国产亚洲一区二区三区_国色天香精品一卡2卡3卡4 | 久久久久久久久久免费高清_黄色激情视频网站_欧美一级别_亚洲精品91_爱臀av_97人妻无码一区二区精品免费 | 四虎视频在线精品免费网址_青草青草久热国产精品_免费在线亚洲_www一片黄_最色www_国产女上位疯狂榨精合集 | 成人高清网站_91精品激情在线观看最新更新_yy111111少妇影院中文字幕_18禁黄网站网址免费_国产一区二区内射最近更新_国产日韩一二三区 久久久免费毛片_色先锋资源久久综合5566_91视频久久_国产精品自拍99_一级毛片欧美真人视频_亚洲欧美日韩中文无线码 | 99精品久久久久久_里面也请好好动漫2在线观看_久久躁日日躁aaaaxxxx_亚洲VA在线VA天堂XXXX中文_伦理黄色片_国产专区av | 亚洲精品久久久久AV无码_午夜激情av在线_成人性午夜免费视频网站_亚洲AⅤ无码一区二区波多野_无码午夜福利免费区久久_中文字幕精品亚洲无线码一区 | 777午夜_女调教脚奴网站_亚洲精品~无码抽插_两个黑人大战嫩白金发美女_两个奶头被吃高潮_久久久国产精品免费a片3d | 亚洲AV午夜成人影院老师机影院_国产亚洲精品久久7788_亚洲一级一级一级_色视频观看_妺妺窝人体色聚窝窝WWW_久久久久久久久四区三区 | 欧美老妇大p毛茸茸_草久久久久久_99视频精品全国免费_国产精品久久久久久一二三四五_亚洲黄色a级片_国产福利a级 | 精品人妻伦一品二品三品免费视频_国产精品久免费的黄网站_精品国产综合成人亚洲区2022_欧美日韩亚洲精品瑜伽裤_在线看片毛片无码永久免费_日本中文字幕在线观看视频 | 91精品视频在线播放_久久久激情视频_国产精品一区二区av在线观看_国产精品高潮久久久久久_久久99国产精品久久99大师_国产精品一级视频 | 色yeye在线视频观看_综合亚洲另类欧美久久成人精品_怡红院日本一道日本久久_欧美性色欧美a在线播放_三上悠亚福利一区二区_国产1区二区三区 | 羞羞影院午夜男女爽爽影院网站_91视频网址_七七久久_www.嫩草视频_亚洲日韩精品乱码中文字幕_国产一区欧美日韩 | 九九在线观看免费视频_色图自拍偷拍_日本无毛_国产成人综合亚洲亚洲国产第一页_超碰人人超碰_久久久久国产精品免费 | 99久久精品免费看国产交换_天天干视频_老湿午夜免费yin22.xyz_网红av在线_福利视频入口_免费一区二区三区视频在线 | 噼里啪啦完整高清观看视频_韩国二三区_69超碰_巨爆中文字幕巨爆区爆乳_亚洲国产精华液网站w_亚欧美日韩 | 91在线视频在线观看_国产午夜毛片v一区二区三区_惊弦45集全免费看_极品人妻少妇一区二区三区_欧美黄色视屏_免费看国产操逼视频 | 亚洲色图天堂_国产精品久久久久国产a级_成人一区二区免费中文字幕视频_久久涩视频_色综合热_成人午夜看黄在线尤物成人 | 亚洲最新视频在线观看_中文人妻无码一区二区三区在线_91激情小视频_神马久久桃花_三级超碰_色www免费视频 | 国产亚洲精品成人a在线_aaa久久_91色亚洲_日本人真淫视频一区二区三区_久久久xx_久久久久成人精品无码中文字幕 | 日本xx13一18处交高清_亚洲国产精品无码二区_国产偷亚洲专区在线观看_下面一进一出好爽视频_一级在线免费视频_jizz亚洲大全 | 性色A∨人人爽网站HD_亚洲AV日韩AV高清在线播放_重口女人毛片免费_欧美综合在线视频_国内精品久久久_免费在线观看的av | 亚洲精品资源在线_国产精品一区二区欧美黑人喷潮水_久久精品99国产精_好男人WWW社区视频在线资源_少妇的渴望HD高清在线播放_chinesexxxx极品少妇 | 中文不卡1区2区3区_在线免费观看不卡av_亚洲精品第一国产综合精品99_台湾佬久久_国产老熟女狂叫对白_METART极品人体 | 国产日韩欧美一二三区_欧美熟妇丰满XXXXX裸体艺术_97久久网站_丰满的少妇中文HD高清_草草影院在线观看视频_一本久久A久久免费精品不卡 | 亚洲精品自产拍在线观看_色呦色呦网站_综合国产在线_国产精品免费久久久久久_天堂精品一区_一级片在线播放 | 免费看黄色国产_大地资源网高清在线观看免费新浪_江苏富婆按摩高潮对白_亚洲日本中文字幕在线_日韩在线不卡一区_欧美国产日韩另类 |