Unity/Unity Study 32

[Unity] 클리키 게임 팀 프로젝트 중, 스탯 생성 (enum 사용전)

클리키 게임 중 내 역할은 플레이어 능력치 및 업그레이드였고 필수적으로 데이터 테이블을 ScriptableObject를 이용하여 수치 증가량 테이블을 만들고 업그레이드에 따른 능력치를 산출해야 했다.일단 내가 만들어야할 능력치는 치명타, 자동공격, 골드획득량 추가이다.치명타 데미지(공격력 및 확률), 자동공격 로직, 골드획득 로직은 다른분들이 맡아주셨으나 내쪽에서 능력치를 보내주면 그 능력치만큼 기능이 작동될 수 있게 수치를 잘 맞춰야 했다. [CreateAssetMenu(fileName = "PlayerStat", menuName = "Scriptable Object Asset/PlayerStat")] public class PlayerStat : ScriptableObject { Player ..

Unity/Unity Study 2025.04.07

[Unity] 클리키 게임 팀 프로젝트 중, 여러번 눌림 현상

클리키 게임을 만들고 있는 중 레벨업을 위해 버튼이벤트를 작성해주었다.레벨업 버튼을 눌렀을 때 한번씩 정상적으로 강화가 되던 기존 시스템에, 버튼을 꾹 누르고 있으면 자동으로 연속 강화되는 기능을 추가했다. 이를위해 이벤트 트리거를 활용하였는데 기능 추가 후 버튼을 한번만 눌러도 강화가 두번 실행되는 문제가 발생했다.public class PlayerUpgrade : MonoBehaviour{ // 버튼이벤트 메서드 public void UpgradeClick() { int gold = playerStat.upgradeGold; // 강화 비용 가져오기 if (player.gold >= gold) { player.gold -= gold; ..

Unity/Unity Study 2025.04.03

[Unity] 개인과제, ATM 만들기 - JSON을 이용한 유저 저장

일단 나는 다른분들이 Json을 사용하는건 많이 봐왔으나 보기만 했을 뿐 이론이나 내가 손댄적은 한번도 없었기에 저건 저장하는 기능의 일부구나 라고만 생각했지 그 외에 알고있는건 단 하나도 없었다.그런 상태에서 시작하려고 하니 이론적으로 공부해도 무슨소린지 이해가 안되어 어려운점이 많았다.. 일단 GameManager에서는 유저 데이터의 경로를 설정하고, 정보를 저장할 수 있도록 했다.public class GameManager : MonoBehaviour{ string userPath; // 사용자 목록 지정 경로 private void Awake() { // Assets 폴더 내 SaveData 폴더를 경로로 설정, userData 이름으로 저장 userPath = ..

Unity/Unity Study 2025.03.28

[Unity] 개인과제, ATM 만들기 - PlayerPrefs를 통한 유저 저장

이제 사용자 정보를 저장할 차례, 사용자 정보는 제이슨(JSON) 혹은 PlayerPrefs를 통해 만들라고 되어있었는데 나는 제이슨은 자신이 없었으므로.. 바로 PlayerPrefs로 결정.public class GameManager : MonoBehaviour{ public static GameManager Instance; public UserData userData; private void Awake() { if (Instance == null) { Instance = this; } userData = new UserData("JeeU", 100000, 50000); } private void S..

Unity/Unity Study 2025.03.26

[Unity] 개인과제, ATM 만들기 - 입금, 송금

일단 순서는 메인화면 구성(현금, 사용자 정보, 잔액, 입출금), 유저데이터 클래스 작성, 게임매니저 생성, UI와 데이터 연동으로 하여 본격적으로 입출금 기능을 만들고 마지막에 저장기능까지 만들어줬다.[System.Serializable]public class UserData{ public string UserName; public int Balance; public int Cash; public UserData(string username, int balance, int cash) { UserName = username; // 이름 Cash = cash; // 현금 Balance = balance; //..

Unity/Unity Study 2025.03.25

[Unity] 3D Surviver 팀 프로젝트 중, Player 사망처리 및 애니메이션

public interface IDamagable{ void TakePhysicalDamage(float damage);}IDamagable 인터페이스는 데미지를 처리하는 메서드를 제공하며 StatManager에 넣어 다양한 클래스에서 피격에 대해 구현할때 TakePhysicalDamage 메서드를 호출해줄수 있게된다.이렇게 하면 IDamagable을 구현한 객체들이 일관된 방식으로 데미지 받는 방식을 처리할 수 있게 된다. public class PlayerCondition : StatManager{ public void TakePhysicalDamage(float damage) { onTakeDamage?.Invoke(); animator.SetTrigger(..

Unity/Unity Study 2025.03.25

[Unity] 3D Surviver 팀 프로젝트 중, 상태(Stat) UI

UI 담당은 아니었으나 적용되는 원리에 대해 공부도 할겸 Stat 손대는김에 같이 작성했었다.중간에 이상한곳에 적용하기도 했고 쌩뚱맞게 다른방법도 시도해보고 했었는데 정신없는 나머지 어떤식으로 했었는지 기록하지는 못했다......(ノへ ̄、) using UnityEngine;using UnityEngine.UI;public class ConditionUI : MonoBehaviour{ public PlayerCondition playerCondition; public Image _Health; public Image _Hunger; public Image _Stamina; public Image _Moisture; public string conditionType; p..

Unity/Unity Study 2025.03.20

[Unity] 3D Surviver 팀 프로젝트 중, Player Animation 설정 (feat. Mixamo)

원래 사용하려는 캐릭터 Asset에 애니메이션이 다 있는줄알고 받았는데 없었다. 창의적인 감자인 나는 내가 bone의 rotation값을 다 만져서 애니메이션 작업을 해야하나 고민을 했다.그러다 알게된 Mixamo, 어도비에서 서비스하는 3D 캐릭터의 애니메이션 적용 사이트다.다양한 캐릭터 모델과 애니메이션을 제공하고 있어 많은 사람들이 이용하는데 이곳에서 내 캐릭터의 애니메이션을 유니티에 적용할 수 있다!접속해서 우측 상단의 UPLOAD CHRACTER 버튼을 누르면 위와같이 창이 뜨고, 드래그 하거나 Select Charactor file을 클릭하면 직접 파일을 선택할 수 있다.나의 경우 fbx파일이 있어 넣어주었고, 잠깐 로딩창이 뜨는데 기다리면 된다, 이후 AUTO-RIGGER라는 창이 뜨면 캐릭..

Unity/Unity Study 2025.03.19