string keyword="UI의 재미";
1. 알고리즘 코드 카타
(1) x만큼 간격이 있는 n개의 숫자
<나의 솔루션>
public class Solution
{
public long[] solution(int x, int n)
{
long[] answer = new long[n];
long tmp = 0;
for (int i = 0; i < n; i++)
{
tmp += x;
answer[i] = tmp;
}
return answer;
}
}
>>팀원님의 도움을 받아 코드카타 제출!
처음엔 for문 안에 if문으로 돌렸는데 자꾸 오류가 나서 질문을 했더니 답을 주셨다!
2. unity 게임 개발 숙련
(1) 플레이어 상태 및 UI
UI를 만들어주기 위해 Canvas를 추가해 주고 condition들을 넣어줬다.
>>캔버스는 1920:1080으로 설정.
>>conditions의 위치를 하단으로,하고 vertical Layout을 달아준 다음 캔버스에 넣어주면 위치가 고정된다.
중간에 고기의 이미지가 안들어가는 현상이 있었다.
>>Defalt로 설정이 되어 있던 걸 Sprite로 바꿔주면 된다.
다음은 만들어둔 UI를 실제로 동작하게 스크립트를 짜고 연결해주는 작업!
<PlayerConditions>
public interface IDamagable
{
void TakePhysicalDamage(int damageAmount);
}
[System.Serializable]
public class Condition
{
[HideInInspector]
public float curValue;
public float maxValue;
public float startValue;
public float regenRate;
public float decayRate;
public Image uiBar;
public void Add(float amount)
{
curValue = Mathf.Min(curValue + amount, maxValue);
//최대값을 안넘게 하기 위해서.
}
public void Subtrack(float amount)
{
curValue = Mathf.Max(curValue - amount, 0.0f);
//0보다는 낮아지지 않게.
}
public float GetPercentage()
{
return curValue / maxValue;
}
}
public class PlayerConditions : MonoBehaviour, IDamagable
{
public Condition health;
public Condition hunger;
public Condition stamina;
public float noHungerHealthDecay;
public UnityEvent OnTakeDamage;
void Start()
{
health.curValue = health.startValue;
hunger.curValue = hunger.startValue;
stamina.curValue = stamina.startValue;
}
// Update is called once per frame
void Update()
{
hunger.Subtrack(hunger.decayRate * Time.deltaTime);
stamina.Add(stamina.regenRate * Time.deltaTime);
if(hunger.curValue == 0.0f)
health.Subtrack(noHungerHealthDecay * Time.deltaTime);
if (health.curValue == 0.0f)
Die();
health.uiBar.fillAmount = health.GetPercentage();
hunger.uiBar.fillAmount = hunger.GetPercentage();
stamina.uiBar.fillAmount = stamina.GetPercentage();
//UI연결
}
public void Heal(float amount)
{
health.Add(amount);
}
public void Eat(float amount)
{
hunger.Add(amount);
}
public bool UseStamina(float amount)
{
if (stamina.curValue - amount < 0)
return false;
stamina.Subtrack(amount);
return true;
}
public void Die()
{
Debug.Log("플레이어가 죽었다.");
}
public void TakePhysicalDamage(int damageAmount)
{
health.Subtrack(damageAmount);
OnTakeDamage.Invoke();
}
}
>>값들을 설정해주고 UI Bar에 아까 만들어둔 애들을 넣어준다.
>>처음에는 배고픔이 감소
>>배고픔이 0이 되면 체력이 감소
2. 개인과제_ATM
(1) ATM 화면구성
>>기본 화면 구성 UI 넣어놓기 작업중
마무리
강의를 먼저 다 듣고 개인과제를 하기엔 왠지 또 마무리가 안될 것 같아서 강의는 한두개만 듣고 개인과제를 시작!
일단 기본적인 ATM의 화면구성이 꾸미는 재미가 있었다.
중간에 화면 비율때문에 살짝 버벅이긴 했지만 해결하고 하루를 마무리!
3D게임을 만드는 것도 재밌고, 개인과제도 재밌다
.
.
.
with 서열 확실한 요비용이
'개발자_뉴비일지' 카테고리의 다른 글
내일배움캠프 Unity 31일차 TIL - 버튼 (2) | 2024.02.05 |
---|---|
주말 TIL_02 (1) | 2024.02.05 |
내일배움캠프 Unity 29일차 TIL - 3D (0) | 2024.02.01 |
내일배움캠프 Unity 28일차 TIL - 즐거운 Ending (0) | 2024.01.31 |
내일배움캠프 Unity 27일차 TIL - 추가작업 (0) | 2024.01.31 |