목록창고/게임 개발 [Hidden] (86)
도드넷

C# 문자열 검색 문자열 포함 여부 확인하는 함수, 대문자 소문자 상관없이 string에 특정 string 패턴이 포함되어 있는지 확인하기. 인벤토리 검색, 파일 검색, 페이지 검색시 사용되는 검색 함수. 흔한 인벤토리 검색, 파일 이름 검색시 사용되는 문자열 패턴 검사 Linq 함수다. (패턴식 문자열 포함, 대문자 소문자 상관 X) 검색대상.Any(아무문자 => 검색대상.IndexOf(검색키워드, StringComparison.OrdinalIgnoreCase) >= 0); * 당연히 Linq 참조가 필요하다. string.contain과 다르게 완벽한 매치가 아니라 일부만 포함되어 있어도 결과를 반환한다. "ABCD" -> "BC" 검색시에도 결과에 포함 하지만 "BD" 검색시 포함되지 않음. "문자..

유니티 레이케스트(Raycast) 투사체 총알 Projectile 만드는법. #0 기본적인 충돌과 이동 구현시 투사체에 Rigidbody 또는 Collider 를 사용하지 않는다. - 유니티 자체 피직스를 빠른 이동시 신뢰도가 매우 떨어진다. #1 투사체의 이동, 회전, 충돌은 Update 문을 이용한다. #2 Update 문은 두 가지 파트로 구성되어 있다. 1. [이동] 2. [Raycast를 이용한 충돌 검사] #3 [이동] 파트 유니티 C# 투사체의 이동은 아래와 같이 구현한다. 현재위치 = transform.position; 새로운 위치 = 현재 위치 + (방향 * 속도 * Time.deltaTime) transform.position = 새로운 위치; * transform.up? - 유니티 에..

C# 리스트 List RemoveRange 예제/예시 일정 구간 지우기. C# List의 내장함수인 RemoveRange의 기능과 사용법, 예제의 빠른 설명. C# 리스트 List RemoveRange의 정의. RemoveRange(시작_인덱스, 지울_요소의_갯수); 빠르고 쉬운 C# List RemoveRange의 예제/예시 C# List가 있다고 하자. MyList = new List(); C# List에 0~4 까지의 정수를 넣는다. MyList.Add(0); MyList.Add(1); MyList.Add(2); MyList.Add(3); MyList.Add(4); { 0, 1, 2, 3, 4 } 위의 C# List에서 RemoveRange를 이용해서 "특정 구간"만 제거해보자. { 0, 1, 2,..

유니티 로딩, 모바일 게임 로딩시간에 대하여. 안드로이드 모바일 게임 로딩 1. 로딩 시간 제한. - 플레이어가 메인화면에 도달하기 까지 걸리는 평균 시간으로 반드시 30초를 초과해서는 안된다. (최저사양 기기 기준) 2. 반드시 로딩진행바, 로딩아이콘, 로딩UI를 만들어야한다. - 유저 입장에서 로딩이 진행되고 있고 얼마나 진행됬는지 알게하는것이 중요하다. - 플레이어들은 대게 참을성이 없다. 3. 유니티 로딩시간을 증가시키는 원인. - 매우 많은 레퍼런스와 게임 오브젝트. - 얼마나 많은 애셋과 게임 오브젝트가 서로 연결(레퍼런싱)되어 있는지 고려해보자. 또 수 많은 오브젝트들이 시작시 어떤 함수 (OnEnable, Start, Awake) 를 사용하고있는지도 잘 생각해야한다. 4. 로딩 시간은 모바..

유니티 구글 광고, 구글 애드몹 API 설치법! 사실상 모바일 무료 게임 = 광고 플랫폼이라고 봐도 무방하다. 유니티에서 만든 게임에 구글 광고를 삽입하는 방법이다. 1. 구글 애드몹 & 구글 플레이 콘솔 가입 https://admob.google.com/intl/ko/home/ http://play.google.com/console 만약 구글 플레이 콘솔 개발자 아이디와 애드센스 아이디가 존재하면 연계되서 원클릭 신속 가입 가능. 아니면 기다리고 우편으로 코드받고... 기억도 안나네 그렇고 그런 과정을 거쳐야됨. 구글 애드몹을 사용하려면 구글 플레이 콘솔에서 당연히 자신의 유니티 게임(앱)을 등록해야됨. 2. 구글 애드몹 API 패키지 설치. https://github.com/googleads/goog..

유니티 구글 플레이 API 설치법 (Feat. 2022) unity googleplay api 설치및 업데이트. 로그인 기능 추가하기. 처음 하면 좀 많이 햇까릴 수 있으니까 침착하게 단계별로 진행 ㄱㄱ #0 기존 프로젝트 백업. - 개발 101! 언제나 버전관리 & 백업은 필수!! #1 유니티 구글 플레이 API 다운로드. https://github.com/playgameservices/play-games-plugin-for-unity - 삐약삐약 뉴비를 위한 깃헙 사용법 : CODE 누르고 ZIP파일 다운로드. #2 기존 Google Play API 삭제 (새로 설치시 이 부분 스킵!) (업데이트시) 구글 플레이 API 유니티에서 삭제하기. 기존 구글 플레이 API 를 업데이트하려고 하는거면 유니티에..

유니티 destroy vs 유니티 SetActive(false). 유니티 게임 오브젝트를 제거 삭제할때 어떻게 해야할까? 1. 만약 게임 오브젝트가 재사용 되지 않는다면 삭제해야한다. Destroy(gameObject); 2. 만약 게임 오브젝트가 재사용되면 삭제하지 않고 비활성화 시킨다. gameObject.SetActive(false); 가장 좋은예로 투사체(총알), 특수 효과(FX)는 매우 자주 계속 반복되서 사용되므로 미리 만들어놓고 List에 넣어서 ON/OFF를 반복하며 꺼내쓰는 기법인 오브젝트 풀링을 사용하면 좋다. 왜냐하면 게임 오브젝트를 생성(Instantiate)하고 삭제(Destroy)하는 작업은 약간 고사양이며 잦은 생성과 삭제로 GC가 불려 프레임 감소를 일으킬 수 있기 때문이다...

유니티 Lerp Mathf Lerp의 활용? - 피해량 비율 증감 공식(?) 뜬금포로 [글 -> 수학식] 사고를 해보자. (도전) 1. 현재 체력이 낮을 수록 더 큰 피해를 입힙니다. (최대 피해 증가량 50%) Amp = 0.5f * (최대 체력 - 현재 체력) / (최대 체력); 피해량 += 피해량 * Amp; 공식1 :: A 가 MAX, B 값이 낮을수록 증가 : (B - A) / (A) -- Current vs Max 역비율 == 1 - B / A 2. 현재 체력이 높을수록 더 큰 피해를 입힙니다. (풀피 일때 최대 피해 증가량은 75%) Amp = 0.75f * (현재체력 / 최대체력); 피해량 += 피해량 * Amp; 공식2 :: A가 MAX, B 값이 증가할수록 증가 : B / A -- Cu..

유니티 C# 레퍼런스 오류 해결법 "형식 또는 네임 스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요." 보통 위와같은 참조, 레퍼런스 오류는 해당 형식의 객체가 실제로 정의되지 않거나 존재하지 않을때 발생한다. 하지만 분명히 정의를 내렸음에도 유니티와 연동된 C# 비주얼 스튜디오에서 이를 인식하지 못하고 셀수없이 많은 [형식 또는 네임 스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요.] 스크립트 오류가 발생한다면 어떻게 해야할까? 해결법 비주얼 스튜디오를 종료한후 해당 유니티 프로젝트의 메인 폴더(Assets 폴더 아님!)에 들어가서 [프로젝트_이름.sln] 파일을 삭제 혹은 다른곳으로 이동시킨다. :)

C# 리스트 순서 섞기, List Shuffle 간단히 리스트 섞는 방법. (feat. 유니티) C#에서 특정 리스트를 셔플 Shuffle 카드 섞듯이 랜덤하게 리스트의 순서를 설정하는 방법, 코드. C#에서 List 순서 랜덤화, 셔플을 내가 할 수 있는 수준에서 최대한 간단하고 가장 명료하게 짜봄. 그냥 랜덤 인덱스 뽑아서 새로운 리스트에 넣고 기존 DB에서 빼고 다시 뽑는 방식. goto 써서 반복문 만든게 꺼림직할수도 있는데 나는 아니니까 노상관 :3