-
[게임엔진활용] 5강 AutoNumber, ProgressBar[DSU] 게임엔진활용 2026. 4. 13. 22:29728x90
사과 게임에서 Score점수 연출을 구현
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182public class RenderView : MonoBehaviour{// ...//int score;AutoNumber score;// ...ProgressBar progressBar;void loadIngame(){// ...score = new AutoNumber(0);// ...progressBar = new ProgressBar(new Rect(x, y - 40, 950, 30));progressBar.bc = Color.clear;progressBar.fc = Color.red;progressBar.lineWidth = 2f;progressBar.curr = 0;progressBar.max = 2000;progressBar.rv = this;}void drawIngame(float dt){// ...#if falsesetRGBA(1, 0, 0, 1);setLineWidth(2);float x = (mc.devWidth - 60 * 15) / 2;float y = (mc.devHeight - 60 * 10) / 2;float w = 950;drawRect(x, y - 40, w, 30);w *= (float)score.get() / 2000;fillRect(x, y - 40, w, 30);setRGBA(1, 1, 1, 1);#elseprogressBar.curr = score.get();progressBar.paint(Time.deltaTime);#endifsetStringName("고딕체");setStringSize(30);setStringRGBA(1, 0, 0, 1);score.update(Time.deltaTime);drawString("Score : " + score.get(), mc.devWidth - 10, 10, TOP | RIGHT);// ...if (gameOver){setStringName("고딕체");setStringSize(100);setStringRGBA(1, 0, 0, 1);drawString("Score : " + score.get(), 400, 200, TOP | LEFT);}// ...}public void mouseIngame(int state, float x, float y){// ...if (sum == 10){Debug.Log("제거하자");for (int i = 0; i < apple.Length; i++){if (apple[i].pressed){apple[i].s = "0";score.add(100);}}}// ...}cs AutoNumber.cs
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960using UnityEngine;public class AutoNumber{int number;int numberS, numberE;float delta, _delta;public AutoNumber(int v, float duration = 0.3f){number = v;_delta = duration;delta = duration;}public void set(int v){number = v;}public void add(int v){//number += v;if (delta < _delta){numberS = get();numberE = numberE + v;}else{numberS = number;numberE = number + v;}delta = 0.0f;}public int get(){if( delta < _delta ){float r = delta / _delta;return (int)(numberS * (1.0f - r) + numberE * r);}return number;}public void update(float dt){if( delta < _delta){delta += dt;if( delta >= _delta ){delta = _delta;number = numberE;}}}}cs ProgressBar.cs
123456789101112131415161718192021222324252627282930313233343536using UnityEngine;public class ProgressBar{public Rect rt;public Color bc, fc;public float lineWidth;public int curr, max;public RenderView rv;public ProgressBar(Rect rt){this.rt = rt;bc = Color.black;fc = Color.white;lineWidth = 2f;curr = 0;max = 100;}public void paint(float dt){rv.setRGBA(bc.r, bc.g, bc.b, bc.a);rv.fillRect(rt.x, rt.y, rt.width, rt.height);rv.setRGBA(fc.r, fc.g, fc.b, fc.a);rv.setLineWidth(lineWidth);float w = rt.width;rv.drawRect(rt.x, rt.y, w, rt.height);w *= (float)curr / max;rv.fillRect(rt.x, rt.y, w, rt.height);rv.setRGBA(1, 1, 1, 1);}}cs 
매일매일 열심히 게임개발하고 있습니다 '[DSU] 게임엔진활용' 카테고리의 다른 글
[게임엔진활용] 6-2강 이미지 분할 및 애니메이션 (0) 2026.04.20 [게임엔진활용] 6-1강 operator (0) 2026.04.20 [게임엔진활용] 4강 미니(사과)게임 제작 (0) 2026.04.07 [게임엔진활용] 3강 Geometry, Texture, String (0) 2026.03.30 [게임엔진활용] 2강 게임 개발 해상도(더블버퍼링, 뷰포트) (0) 2026.03.25

