일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 오블완
- anonymous page
- 유니티
- project3
- 크래프톤 정글 4기
- 티스토리챌린지
- 알고리즘수업-너비우선탐색2
- Unity
- C
- 크래프톤 정글
- 파이썬
- 네트워크
- 연결리스트
- 크래프톤정글
- kraftonjungle
- 이벤트 함수 실행 순서
- 알고리즘
- c#
- 핀토스
- 크래프톤정글4기
- 추상클래스와인터페이스
- 전쟁-전투
- TiL
- User Stack
- 백준
- 다익스트라
- pintos
- 4기
- BFS
- KRAFTON JUNGLE
- Today
- Total
목록전체 글 (154)
말감로그
1년전 처음 유니티를 배우고 스스로 만든 게임이었던 2D 플랫포머 게임을 리팩토링/수정하려고 한다. 우선 키보드 입력 플레이어 조작을 모바일 버튼 터치 조작으로 변경하였다.//PlayerCtrl.csprivate void HandleInput(){ dirX = Input.GetAxis("Horizontal"); transform.Translate(dirX * Time.deltaTime * moveSpeed, 0, 0); if (Input.GetKeyDown(KeyCode.Space) && IsGrounded()) { rb.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse); } if (Input.GetKeyDown(..
그동안 작성했던 코드들에 대해서 버그나 기능을 추가하거나 리팩토링하면서 전체적인 코드를 수정했다. 1. 저장 후 로드 시 인벤토리에 있는 씨앗을 심을 때 성장이 안되는 문제인벤토리에 아이템을 추가하고 저장 후 로드할 때 다른 아이템들은 잘 사용이 되지만, 씨앗 아이템들은 사용을 해도 성장이 되지 않는 문제가 있었다.그 이유를 찾아보니 식물 성장 시스템을 위해선 해당 아이템의 PlantData가 필요했지만, 저장 할 때 아이템의 데이터(ItemData)만 저장을 하고, PlantData는 저장하지 않아서 텅 비어있는 데이터로 인해 식물 성장 시스템이 작동하지 않았던 것이었다. 그래서 InventorySlotData에 plantName을 저장해서 해당 plantName으로 해싱하여 PlantData를 찾아서..
마우스 커서를 변경하기 위해서 마우스 Sprite의 Texture Type을 Cursor로 변경해줘야 한다. 그리고 SetCursor를 사용하여 내가 설정한 새로운 커서 텍스쳐 이미지로 커서를 변경한다.using UnityEngine;public class ChangeCursor : MonoBehaviour{ public static ChangeCursor instance; public Texture2D newCursorTexture; void Awake() { if (!instance) { instance = this; DontDestroyOnLoad(this.gameObject); } el..
Unity에서 코루틴을 실행하려면 MonoBehaviour 컴포넌트가 있어야 하지만 SoundManager는 MonoBehaviour를 상속받지 않는 정적 메서드를 사용하는 싱글톤 패턴을 구현한 클래스이다. private 생성자를 통해 외부에서 인스턴스를 생성하지 못하도록 제한한다. 싱글톤 패턴의 핵심인 "클래스의 인스턴스가 하나만 존재해야 한다'는 것을 보장하는 것이다.private 생성자를 사용하면 외부 코드에서 new SoundManager()와 같이 새 인스턴스를 생성하는 것을 방지할 수 있다.static 생성자는 클래스가 처음 로드 될 때 단 한 번만 실행된다.이를 통해 SoundManager.Instance가 초기화되며, 멀티 스레드 환경에서도 안전하게 인스턴스를 생성할 수 있다.public ..
인게임/아웃게임 사운드를 찾아서 사운드 매니저를 구성하였다. 사운드 매니저는 이분의 블로그를 참고하였다.https://ansohxxn.github.io/unity%20lesson%202/ch9-1/ Audio Source 컴포넌트 -> 소리 발생 근원지, MP3 PlayerAudio Clip -> 어떤 소리를 재생할 지, MP3 음원Audio Listner -> 듣는 사람, 귀 (Main Camera에 기본적으로 달려있는 컴포넌트) 소리를 발생시킬 오브젝트들에게 Audio Source 컴포넌트를 붙여주고, 이 컴포넌트의 Audio Clip에 원하는 음원을 할당하면 된다. 사운드 매니저를 사용하는 이유는 게임오브젝트가 비활성화 혹은 파괴되면 오브젝트에 붙어있는 Audio Source가 재생하던 소리들까지..
아이템을 파는 ItemBox는 있지만, 아이템을 사는 ItemShop은 없어서 따로 만들어주었다. UI는 이런식으로 만들어줬다. ItemShop 스크립트는 간단하게 sellItems 리스트를 만들어 각 리스트에 아이템을 추가해주고, 해당 버튼을 누르면 돈이 차감되고, 해당 아이템을 toolbar에 추가해주는 형식으로 만들었다.using UnityEngine;using System.Collections.Generic;using UnityEngine.UI;using JetBrains.Annotations;public class Shop : MonoBehaviour{ public GameObject shopPanel; public Button riceBuyBtn; public Button t..
씬 이동 페이드 인/아웃 효과타이틀 씬에서 인게임 씬으로 넘어갈 때 페이드 인/아웃 효과를 주도록 하였다. 코루틴을 사용하여 알파 값을 조정하여 효과를 주도록 하였지만, 타이틀에서 인게임 씬으로 넘어갈 때 페이드 인 효과는 나타나지 않고 바로 씬이 전환되고 MissingRefrence 에러가 발생했었다.해당 에러는 Image 즉, fadePanel이 파괴되었는데 접근하려고 해서 생긴 에러였다.FadeEffect라는 스크립트를 포함하는 게임오브젝트를 생성해주었고, 캔버스 아래에 fadePanel을 생성하고, 싱글톤으로 씬이 바뀌어도 사라지지않도록 했지만, 자꾸 사라지게 되고, 아예 Image 자체도 DonDestroyOnLoad() 해도 똑같은 상황이었다. 유튜브를 찾고 gpt에게 물어보니, 이러한 구조로..
그래도 농장인데 플레이어와 나무만 있으면 심심할 것 같아 소를 하나 만들어서 울타리 안에서 자유자재로 이동시키는 작업을 하였다. 우선 소의 idle, walk 애니메이션을 만든 후, 스크립트를 생성하여 소의 랜덤 이동 방식을 구현하였다.using System.Collections;using System.Collections.Generic;using Unity.VisualScripting;using UnityEditor.Callbacks;using UnityEngine;using UnityEngine.UIElements;public class Cow : MonoBehaviour{ public float walkSpeed = 1.2f; public float walkTime = 3f; pub..
Animated Tile은 특정한 애니메이션을 반복적으로 재생하는 타일이다.정적인 요소보다, 동적인 animation이 들어간 타일이 더 시각적으로 효과적이기 때문에, water animatedTile을 만들어봤다. 우선 Animated Tile을 사용하기 위해서는 Package Manager > Unity Registry > 2D Tilemap Extras를 import 해야한다. project 창 > Create > 2D > Tiles > Animated Tile 로 새로운 animated Tile을 생성해준다.그리고 이처럼 sprite를 추가해준다. 추가한 tile을 tile palette에 추가하여 사용해주면 된다.