如何制作一个简单的进度条

时间:2019-03-28 14:17:51

标签: c# unity3d

var barDisplay : float = 0;
 var pos : Vector2 = new Vector2(20,40);
 var size : Vector2 = new Vector2(60,20);
 var progressBarEmpty : Texture2D;
 var progressBarFull : Texture2D;

 function OnGUI()
 {

     // draw the background:
     GUI.BeginGroup (new Rect (pos.x, pos.y, size.x, size.y));
         GUI.Box (Rect (0,0, size.x, size.y),progressBarEmpty);

         // draw the filled-in part:
         GUI.BeginGroup (new Rect (0, 0, size.x * barDisplay, size.y));
             GUI.Box (Rect (0,0, size.x, size.y),progressBarFull);
         GUI.EndGroup ();

     GUI.EndGroup ();

 } 

 function Update()
 {
     // for this example, the bar display is linked to the current time,
     // however you would set this value based on your desired display
     // eg, the loading progress, the player's health, or whatever.
     barDisplay = Time.time * 0.05;
 }

如何使用OnGUI统一制作几何破折号进度条?我尝试在线查找它,但找不到它。我正在构建类似Temple Temple的跑步游戏,我想向玩家展示还剩多少地图。

1 个答案:

答案 0 :(得分:0)

用于进度条
您可以使用Unity滚动条对象制作所需的内容。 here上有一个很好的教程。本质上,是将滚动条对象添加到画布,然后从代码中更改滑块值。

用于滚动纹理
如果要在进度条上滚动纹理,则可以对放置在滑块上的图像进行动画处理。如果您不想手工制作动画,那么它会稍微复杂一些。理想情况下,您可以在代码中设置图像的纹理偏移量以使其滚动,但是在查找之后,我认为Unity不允许您在非3D对象上执行此操作。

如果您仍然希望它滚动并且不想为其绘制手绘动画,则可能需要考虑将UI蒙版组件(tutorial here)和内置2D组合在一起动画工具(tutorial here)。