Game Dev

· Game Dev
PlayerPrefs 클래스는 int, float, string, bool 타입의 변수를 저장하고 로드하는 기능을 제공합니다. PlayerPrefs 매소드 매소드 기능 DeleteAll 모든 키값을 삭제한다. DeleteKey 특정 키값을 삭제한다. GetFloat 지정한 float 타입의 키값을 로드한다. GetInt 지정한 int 타입의 키값을 로드한다. GetString 지정한 string 타입의 키값을 로드한다. HasKey 해당 키가 존재하는지 반환한다. Save 변경된 모든 키값을 물리적인 저장 공간에 저장한다. SetFloat 지정한 키로 float 타입의 값을 저장한다. SetInt 지정한 키로 int 타입의 값을 저장한다. SetString 지정한 키로 string 타입의 값을 저장한다...
· Game Dev
유니티에는 Scriptable Object라는 기능이 있습니다. Scriptable Object를 왜 사용하며, 사용하면 어떤 점이 좋은지 정리해보도록 하겠습니다. Scriptable Object는 대량의 데이터를 저장하는데 사용할 수 있는 데이터 컨테이너입니다. 메모리의 효율 유니티에서 같은 오브젝트를 여러개 만들때, 프리팹이라는 방식으로 원본을 만들고 그 원본을 복사하여 원본과 똑같은 사본들을 만들어냅니다. 이런 경우에 Scriptable Object는 유용하게 사용될 수 있습니다. 프리팹을 인스턴스화 할 때 마다 해당 데이터의 자체 사본이 생성됩니다. 즉 사본을 많이 생성할수록 메모리를 많이 소모하게됩니다. 만약 원본 오브젝트가 1byte의 메모리를 사용한다면, 사본을 10개 만들면 10byte, ..
· Game Dev
출처 : Rookiss님의 인프런 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] 강의를 수강 후 정리한 내용입니다. 서버 OT 웹서버? 게임 서버? 서버 운영? 서버란? 다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행중인 프로그램 영업중인 식당과 유사함 손님이 올 수 있도록 식당을 열고 대기중인 상태 손님이 오면 식당 메뉴/정책에 따라 서비스 제공 게임 서버의 종류 Web Server (aka. HTTP Server) 테이크아웃 포장 전문 식당 손님이 음식을 받아서 떠나면, 그 이후론 연락이 끊긴다. 질의/응답 형태 Game Server (aka. TCP Setver, Binary Server, Stateful Server…) 일반 식당 서빙 직원이 와서 손님에게 물어볼 수도 있고 손..
· Game Dev
모든 UI 오브젝트는 Canvas 오브젝트의 자식 오브젝트여야 한다. Canvas는 EventSystem 오브젝트를 이용하여 메시징 시스템을 지원한다. 따라서 EventSystem이 꼭 필요하다. Draw order of elements 캔버스의 UI 요소는 하이어라키창에 등록한 것과 동일한 순서로 배치된다. UI의 앞,뒤 배치를 바꾸려면 하이어라키 창에서 UI 오브젝트의 순서를 바꾸면 된다. 또한 Transform 컴포넌트의 매소드를 사용해 스크립트에서 순서를 변경할 수도 있다. (SetAsFirstSibling, SetAsLastSibling, and SetSiblingIndex) Render Modes (1) Screen Space - Overlay 씬(scene)의 맨 위에 렌더링된 화면에 UI ..
· Game Dev
서론 대화를 진행하는 도중에, 새로운 키워드가 등장하면 화면에 띄우는 코드이다. 키워드가 등장할 때, AppearKeyword() 코루틴을 시작하고 내부에서 Dotween을 이용해 키워드를 띄웠다. 문제는 2개의 키워드가 연달아 나왔을 때인데, AppearKeyword()를 두 번 연속으로 호출하다보니 뒤에 등장한 키워드만 화면에 보이게 되는 것이다. 때문에 첫번째로 호출된 코루틴이 끝나면 두번째 코루틴을 실행하도록 해야했다. 처음에는 코루틴 내부에서 yield return을 이용해 이후에 등장하는 코루틴을 멈추고자 하였다. 예를들면 코루틴이 진행중일 때, isResting 변수의 값이 false일 동안 멈춘다던지 하는 것이다. 하지만 별개의 코루틴을 제어하는게 생각보다 쉽지 않았고, 또 2개 이상의 키..
· Game Dev
TMP Material 복제 TMP의 인스펙터창에서 Material Preset을 변경할 수 있다. 인스펙터창의 아래에 있는 Material 을 복사 해 여러개의 Material을 만들 수 있다. 서로 다른 색상의 Glow를 적용시킨 Material을 여러개 만들어두었다. 머터리얼은 인스펙터창에서 바꿀 수 있다. 코드에서 Material 바꾸기 인스펙터 창에 다음과 같이 사용할 Material을 등록할 수 있도록 해주었다. 필드 설명 매개변수 name, dialog : string, 화면에 띄우는 내용을 담고 있음 _name : TextMeshProUGUI, name의 내용을 띄우는 TMP를 인스펙터창에서 _name에 할당함 name과 일치하는 Material의 ID를 찾는다. 변경하고자 하는 TMP의 ..
· Game Dev
인스펙터 창에서 적용하기 스크립트 using System.Collections; using System.Collections.Generic; using UnityEngine; namespace DefaultSystem { public enum SoundType { BGM, EFFECT, BGMEFFECT } [System.Serializable] public struct AudioClips { public string ID; //이름 public AudioClip clip; // 오디오 클립 } public class SoundManager : MonoBehaviour { public static SoundManager instance; [SerializeField] AudioSource[] audioS..
· Game Dev
바닷속에서 장애물을 피하며 골인지점에 무사히 도착하면 클리어하는 게임 플레이 화면을 만들기 위해서 가장 첫 단계로 플레이어가 y축을 따가 위, 아래로 이동하는 코드를 작성하였다. 우리 게임은 모바일 게임으로 기획하였기 때문에 버튼 UI를 배치시키고 버튼을 누르면 이에 반응하여 플레이어가 이동하도록 코드를 작성하였다. 플레이어의 움직임을 구현하기 위해서 두 개의 스크립트를 작성하였다. PlayerController ButtonEvent Player 오브젝트 일단 플레이어 역할을 할 오브젝트를 하나 만들었다. 아직 캐릭터 디자인이 진행중이어서 임시로 캡슐모양의 3D 오브젝트를 사용하였다. 플레이어 움직임과 기타 제어 사항들을 작성할 PlayerController 스크립트를 만들고 오브젝트에 컴포넌트로 추가해..
· Game Dev
출처 : 『레트로의 유니티 게임 프로그래밍 에센스』 , 이제민 1. 상속과 재사용 게임 엔진은 이미 완성된 기반 코드를 제공하고, 개발자는 게임 엔진의 코드를 재사용한다. 코드를 재사용하는 방법인 '상속'을 통해 유니티 엔진을 다룰 수 있다. 상속으로 몬스터 만들기 클래스 class Monster class Orc : Monster class OrcChieftan : Orc 기능 + 인공지능 기능 + 애니메이션 기능 + 공격과 방어 기능 + 물리 기능 + 기타 필수 기능 + 초록색 피부 + 오크의 애니메이션 + 오크의 스킬 + 그 외 오크의 고유 기능 + 대장 모자 + 새로운 무기와 강력한 스킬 + 그 외 오크 대장의 고유 기능 특징 - 제대로 된 외형 없음 - 여러 종류의 몬스터 클래스를 구현할 때 부..
hye2021
'Game Dev' 카테고리의 글 목록