欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity繪制二維動態(tài)曲線

 更新時間:2019年03月14日 08:38:16   作者:凱爾八阿哥  
這篇文章主要為大家詳細介紹了Unity繪制二維動態(tài)曲線,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、前言

之前用Line Render實現(xiàn)過這個動態(tài)曲線的繪制,使用這個實在太不方便了,一直尋思怎么在一張圖片上通過控制圖片的像素值實現(xiàn)曲線的動態(tài)繪制。參考了Unity的官網教程實現(xiàn)了這個,效果圖如圖所示:

這樣實現(xiàn)的效果比LineRender 要好,并且不怎么消耗計算和渲染

二、實現(xiàn)

1、代碼創(chuàng)建一個背景貼圖,并將這個貼圖給UGUI的RawImage控件

//創(chuàng)建背景貼圖
  widthPixels = (int)(Screen.width * width);
  heightPixels = (int)(Screen.height * height);
  bgTexture = new Texture2D(widthPixels, heightPixels);
 
  bgImage.texture = bgTexture;
  bgImage.SetNativeSize();

2、計算曲線數據列表對應貼圖中的像素索引

int i;
  int j;
 
  if (Mathf.Abs(to.x - from.x) > Mathf.Abs(to.y - from.y))
  {
   // Horizontal line.
   i = 0;
   j = 1;
  }
  else
  {
   // Vertical line.
   i = 1;
   j = 0;
  }
 
  int x = (int)from[i];
  int delta = (int)Mathf.Sign(to[i] - from[i]);
  while (x != (int)to[i])
  {
   int y = (int)Mathf.Round(from[j] + (x - from[i]) * (to[j] - from[j]) / (to[i] - from[i]));
 
   int index;
   if (i == 0)
    index = y * widthPixels + x;
   else
    index = x * widthPixels + y;
 
   index = Mathf.Clamp(index, 0, pixelsDrawLine.Length - 1);
   pixelsDrawLine[index] = color;
 
   x += delta;
  }

3、在Update里實時更新貼圖的像素值

Array.Copy(pixelsBg, pixelsDrawLine, pixelsBg.Length);
 
  // 基準線
  DrawLine(new Vector2(0f, heightPixels * 0.5f), new Vector2(widthPixels, heightPixels * 0.5f), zeroColor);
 
  for (int i = 0; i < listPoints.Count-1; i++)
  {
   Vector2 from = listPoints[i];
   Vector2 to = listPoints[i + 1];
   DrawLine(from, to, colorLine1);
  }
 
  bgTexture.SetPixels32(pixelsDrawLine);
  bgTexture.Apply();

三、總結

1、比使用Line Render要節(jié)省計算和渲染

2、真正實現(xiàn)了二維的曲線繪制,Line Render始終是3維的

3、曲線坐標的X和Y的值不能超過貼圖的寬度和高度,否則不能繪制

4、完整的工程下載地址:Unity繪制二維動態(tài)曲線

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 10分鐘學會Visual Studio將自己創(chuàng)建的類庫打包到NuGet進行引用(net,net core,C#)

    10分鐘學會Visual Studio將自己創(chuàng)建的類庫打包到NuGet進行引用(net,net core,C#)

    這篇文章主要介紹了10分鐘學會Visual Studio將自己創(chuàng)建的類庫打包到NuGet進行引用(net,net core,C#),本文給大家介紹的非常詳細對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 深入淺出掌握Unity ShaderLab語法基礎

    深入淺出掌握Unity ShaderLab語法基礎

    Unity中所有Shader文件都通過一種陳述性語言進行描述,稱為“ShaderLab”, 這篇文章主要介紹了Unity圖形學之ShaderLab入門基礎,需要的朋友可以參考下
    2023-05-05
  • C#中深拷貝和淺拷貝的介紹與用法

    C#中深拷貝和淺拷貝的介紹與用法

    本文詳細講解了C#中深拷貝和淺拷貝的介紹與用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C#中除去所有在HTML元素中標記

    C#中除去所有在HTML元素中標記

    C#中除去所有在HTML元素中標記...
    2007-03-03
  • C# 的關鍵字詳細介紹

    C# 的關鍵字詳細介紹

    本文將詳細介紹C#關鍵字的應用,可供有需要的朋友參考
    2012-11-11
  • 教你創(chuàng)建一個帶診斷工具的.NET鏡像

    教你創(chuàng)建一個帶診斷工具的.NET鏡像

    本文編寫的初衷是因為在群里有很多小伙伴遇到生產環(huán)境性能問題的時候,.NET的runtime鏡像中沒有帶一些工具,安裝和使用起來很麻煩,所以分享一些我們公司內部一些技巧,對.NET鏡像帶診斷工具相關知識感興趣的朋友一起看看吧
    2022-07-07
  • Unity 百度AI實現(xiàn)人像動漫化效果

    Unity 百度AI實現(xiàn)人像動漫化效果

    這篇文章主要介紹了Unity如何接入百度AI接口, 運用對抗生成網絡技術,為用戶量身定制千人千面的二次元動漫形象,并支持通過參數設置,生成二次元動漫人像。感興趣的可以學習一下
    2022-01-01
  • C#通過指針讀取文件的方法

    C#通過指針讀取文件的方法

    這篇文章主要介紹了C#通過指針讀取文件的方法,涉及C#針對文件的相關操作技巧,需要的朋友可以參考下
    2015-06-06
  • C# 異步返回類型的幾種方式

    C# 異步返回類型的幾種方式

    異步編程已經成為一種重要的編程范式,本文主要介紹了C#異步返回類型的幾種方式,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-03-03
  • C#實現(xiàn)多線程下載文件的方法

    C#實現(xiàn)多線程下載文件的方法

    這篇文章主要介紹了C#實現(xiàn)多線程下載文件的方法,實例分析了C#多線程及文件傳輸的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08

最新評論