強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Unityでプログレスバー(ProgressBar)を実装


プログレスバー(ProgressBar)の作例。シェーダはこちらのものを使用。

How do I mask off specific parts from a plane or cube? - Unity Answers
http://answers.unity3d.com/questions/8601/how-do-i-mask-off-specific-parts-from-a-plane-or-c.html?sort=oldest#

プロジェクトファイルはこちらからダウンロード出来ます。

// Upgrade NOTE: replaced 'glstate.matrix.mvp' with 'UNITY_MATRIX_MVP'

Shader "Custom/ProgressBar" {

Properties {
	_Color ("Color", Color) = (1,1,1,1)
	_MainTex ("Main Tex (RGBA)", 2D) = "white" {}
	_Progress ("Progress", Range(0.0,1.0)) = 0.0
}
 
SubShader {
	Tags { "Queue"="Overlay+1" }
	ZTest Always
	Blend SrcAlpha OneMinusSrcAlpha
	Pass {
	 
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
 
uniform sampler2D _MainTex;
uniform float4 _Color;
uniform float _Progress;
 
struct v2f {
	float4 pos : POSITION;
	float2 uv : TEXCOORD0;
};
 
v2f vert (appdata_base v)
{
	v2f o;
	o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
	o.uv = TRANSFORM_UV(0);
	 
	return o;
}
 
half4 frag( v2f i ) : COLOR
{
	half4 color = tex2D( _MainTex, i.uv);
	color.a *= i.uv.x < _Progress;
	return color*_Color;
}
 
ENDCG
 
	}
}
 
}

関連情報

Unityで外枠付きのプログレスバー(ProgressBar)を実装 - 強火で進め
http://d.hatena.ne.jp/nakamura001/20130310/1362934599