728x90

c# 33

[Unity] API 통신 - TIL#40

API 통신 단방향 통신은 Http, Https(security), 웹통신 양방향 통신은 소켓통신, TCP/UDP 서로의 게임 상태를 동기화할 때 보통 양방향을 쓴다. Unity에선 photon이란 걸로 구현함 클라이언트 - 서버끼리는 보통 툴, 언어가 다 다름 그럼 서로 어떻게 정보를 주고받나? 하나의 규칙을 만드는 것이다. 데이터의 규격을 만들어 놓음 문자열(String)은 대부분 어떤 언어든 다 가지고 있어서 이걸로 소통함. 이게 보통 많이 쓰는게 json. 즉, 클라이언트 -> json 변환 -> 서버 처럼 작동함. 문자열로 보낸다곤 했으나 문자열 자체를 보내는 원리는 아니고 json을 byte로 변환해서 보낸다. '다른 곳에서 데이터를 사용할 수 있도록 데이터를 변환하는 것'을 '직렬화(Seri..

[Unity] FMOD의 기초, 동작 원리와 설치하기 - TIL#36

목차 서론, FMOD란? 적응형 오디오(Adaptive Audio)란? FMOD의 동작 원리 FMOD Studio 컴퓨터에 설치하기 Unity 프로젝트에 FMOD Import 하기 서론, FMOD란? FMOD는 Firelight Technologies Pty Ltd가 개발한 사운드 엔진으로 오디오 랜덤화, 크로스페이드 등 '적응형 오디오' 관련해 많은 기능들을 지원해 Unity같은 게임 엔진에서도 애용하는 미들웨어이다. 비단 유니티뿐만 아니라 언리얼, 그리고 다른 서드 파티 프로그램에서의 지원도 하고 있기 때문에 적응형 오디오 구현을 위해 수많은 게임들이 FMOD를 탑재해 사용하고 있다. 대표 게임으로는 스타II, 다크 소울3, 디제이맥스 리스펙트 V 등이 있다. (나도 디맥을 하면서 fmod 로고를 보..

[Unity] 코루틴(Coroutine)을 이용한 지연 실행, AudioManager 만들기 - TIL#35

1. AudioManager? AudioManager를 쓰는 이유는, 플레이어 기준에서 뇌 속에서 바로 들리는 소리들을 한데 묶어 편하게 관리하기 위함이다. 예를 들면, BGM(배경음악), 플레이어 관련 SFX(효과음) 등이 있을 수 있다. (걷기, 뛰기, 도약, 착지 등) 그래서 어떤 AudioSource 컴포넌트를 만들어서 쓴다면, 무작정 AudioManager를 거치게 하는게 아니라, 해당 음원이 플레이어의 뇌 속에서 울리는 지 아닌 지를 생각해보자. 플레이어 뇌 속에서 들림(BGM, 플레이어 SFX 등) => AudioManager 활용 어떤 객체를 기준으로 적용되는 3D 음원(거리에 따라 멀어지는 장작 소리 등) => 해당 객체에 AudioSource 컴포넌트 추가 그래서 AudioManager..

[Unity] ATM기 모방하기 - TIL#33

(구현한 ATM기의 모습이다.) 구현한 요구사항 필수요구사항 ATM 화면 구성 ✅ 입금 기능 ✅ 출금 기능 ✅ 선택요구사항 통화 단위 적용 ✅ 금액 입력 시 숫자만 입력 ✅ 로그인 기능 ✅ 회원가입 ✅ 송금 기능 ✅ 그 외 추가로 시도한 기능 비밀번호 MD5로 해시해서 저장 ✅ 알게된 점 & 느낀 점 어제 TIL에 작성했듯이 C#에서 해시 알고리즘을 사용하는 방법을 알아봤었다. 항상 개념으로만 인지하고 있다가 언젠가는 실사용을 꼭 해보고 싶었는데, 실제로 코드를 작성해서 내 프로젝트에 적용을 하니 원리도 이해가면서 익숙해졌다. 시도를 해본 것은 그래도 명색이 은행 ATM기를 모방한건데... 데이터베이스 하나 털어서 비밀번호를 바로 알게 된다면 그것만큼 허무한 게 없지 않을까 하는 생각 때문이었다. 그래서..

[Unity] TextMeshPro 사용하기 등 - TIL#32

오늘의 오류 상황 1. TMP - Input Field에서 값이 안 가져와지는 현상 문제 상황: TextMeshPro - Input Field를 이용해서 입력받은 값을 Int로 형변환을 하는게 목적이었는데, 계속 정상적으로 Int로 형변환을 할 수 없다며 에러가 뜬 것이다. 원인: [SerializeField] private TextMeshProUGUI inputTxt; var num = int.Parse(inputTxt.text); 문제 상황에서는 위의 코드처럼 Input Field의 자식으로 있는 Text를 TMP로 가져와서 .text로 접근했었는데, 이게 아무래도 문제가 됐던 모양이다. 해결: 가져올 텍스트를 Input Field의 하위 자식을 가져오지 말고, 처음부터 TMP_InputField로 ..

크기가 작은 부분문자열 - TIL#31

오늘의 알고리즘 오류 상황 [크기가 작은 부분문자열] 문제 : 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 오류 상황: 분명 로직은 맞는 것 같은데 몇몇 문제에서 '런타임 에러'가 뜬다. using System; public class Solution { public int solution(str..

3D Survival 게임 만들기 - TIL#30

(나머지 내용 보충 후 정리 예정) Directional Light : Light 컴포넌트가 들어있음. 빛을 쏴주고 계산하는 것 Light 자체가 연산 자체가 비싸기 때문에 적절한 장소에서만 사용하자 폴더 Materials 생성 -> Material(오브젝트의 재질) 생성 Skybox 라고 명명, 구체 아니면 큐브 형태로 주로 사용함 Shader Standard -> Skybox/Procedual 이걸 적용하려면... 우측 하단 Auto Lighting 버튼 Environment -> Skybox Material -> Skybox 적용 Empty -> Player -> CameraContainer(플레이어의 눈 역할) MainCamera를 CameraContainer의 자식으로 세팅, 그리고 Transf..

728x90