728x90
SMALL

기능구현/아웃게임 17

[UI] - 다국어화(Localization)

지난 시간에 직접 스크립트를 만들고 적용시키며 다국어화를 적용 시켰다. 이번에는 유니티에서 제공해 주는 다국어화 시스템을 이용해서 게임에 적용시켜보자.패키지 버전은 Unity 버전 2021.2 이상부터 사용할 수 있다.   1. Package Manager에서 Loclization 패키지 설치    2. Edit -> Project Settings -> Localization -> Active Settings 만들어주기   3. 폴더 저장 후 해당 폴더에서 Locale Generator 클릭 후 사용할 언어 체크 후 폴더에 다시저장    기본 언어는 한국어로 설정하고 영어, 일본어 추가해주기 Command Line Locale Selector(기본 설정값): 커맨드라인에서 언어를 바꿀 때 사용함Syste..

[UI] - 다국어화(Json) - 2

다국어화(Json) - 1 글을 작성할 때 아래와 같은 문제점이 있었다. 이문제들을 해결해 보자.문제점1. GameObject.name을 기준으로 매칭현재 문제점: UI 텍스트 매칭 기준이 textElement.gameObject.name이기 때문에, 오브젝트 이름 변경 시 언어 데이터 매칭 실패.2.  LoadLanguage() 호출 시 파일 I/O 성능 저하현재 문제점: 매번 언어 변경 시마다 JSON 파일을 파일 경로로 직접 읽어오는 방식이라 성능 저하 및 모바일 환경에서 문제 발생 가능. 해결 방법 TextLocalizer라는 스크립트를 하나 만들어서 다국어화가 필요한 Text가 생길 때 마다 오브젝트에 해당 스크립트 붙혀주자.해당 스크립트가 붙은 오브젝트들은 Key 값을 통해 언어가 적용되도록 ..

[UI] - 다국어화(Json) - 1

게임을 출시하면 여러나라 각국에 출시하게 될 것이다. 그 나라에서 플레이 하려면 그 나라에 맞는 언어를 제공해주어야 할 것이다. 언어를 변경했을 때 각 나라에 맞는 언어를 보여줄 수 있도록 다국어화를 해보자.  구글 스프레드 시트에서 각 나라에 언어를 저장한 후 Json데이터로 변환해서 언어를 변경했을 때 해당 데이터를 받아와서 사용하자.  동작 흐름 OptionPopup에서 드롭다운 선택으로 언어 변경.OnLanguageChange()에서 언어 인덱스를 PlayerPrefs에 저장.LanguageManager.LoadLanguage()를 호출하여 JSON 데이터 로딩.currentLanguageData 딕셔너리 생성 및 UI 텍스트 업데이트.  1. 옵션팝업 생성  2. OptionPopup.Cs 생성..

[UI] - 화면 비율 대응(모바일 환경)

각 모바일 기기마다 화면의 크기는 다 다르다. 또한 아이폰 14Pro 부터는 다이내믹 아일랜드가 생겨서 그 부분도 처리해줘야 한다. 모든 화면에서 UI가 벗어나지 않고 잘 보일 수 있도록 만들어보자.  이런식의 UI가 있다고 가정할 떄    ⚠️ 아래와 같이 다 다른 비율을 가지고 있다. 또한 UI가 밖으로 빠져나가고 있다. ⚠️ 가로형 게임아이폰 12 Pro삼성 제트플립3샤오미 레드미 6 프로  세로형 게임아이폰 12 Pro삼성 제트플립3샤오미 레드미 6 프로  ⚠️ 주의 ⚠️- 패드와 같은 태블릿들은 일반 핸드폰과 해상도가 다르다.- Z플립이나 폴더같은경우 접었다 폈다 하는 경우에 해상도가 바뀐다.- 아이폰 14pro 모델부턴 다이내믹 아일랜드로 인해 그 영역을 침범하면 안된다.  2가지의 스크립트를..

[UI] - 버튼 연속 누르기

클릭 이벤트가 발생할 경우에 그 기능들은 각각 다를것이다. 예를들어 일반적인(한번뿐인) 클릭과 쭉 누르고 있어야 하는 클릭이 있을 것 이다. 이번 장에서는 두가지 경우를 테스트 해보고 만들어보자.  테스트 팝업에서 숫자가 늘어나는 방식으로 확인해보자.  일반적인 클릭Ex) - 팝업 열기, 닫기 1. 팝업 만들기   2. 스크립트 작성     3. 적용   결과 꾹 누를시에 한번에 클릭밖에 되지 않는다.    계속 눌러야 하는 클릭Ex) - 스탯 업그레이드, 게이지 채우기   1.  스크립트 수정       2. 적용 Button -> OnClick XEvent Trigger 추가 -> Pointer Up, Down 추가 해서 사용    3. 결과

[UI] - 닉네임 생성(금칙어 적용) - 구글 시트 txt파일로 받아오기

2번째 방법 (로컬 txt 파일 사용)  !!두가지 방법의 차이점!! 인터넷 연결필요불필요실시간 반영즉시 반영수동으로 업데이트 필요 (파일 갱신)성능실시간 네트워크 요청 때문에 느릴 수 있음빠름 (네트워크 요청 없음)유연성Google Sheets에서 금지어 수정 후 바로 반영 가능수정 후 다시 txt 파일을 새로 받아와야 함   1. Google Sheets에서 금지어 데이터를 가져와 txt 파일로 저장 시트에서 가져와서 block_text.txt 파일을 만들어서 그안에 넣어주자.   2. OutgameConroller.cs 에서 txt 파일을 읽어 금지어 리스트(List)로 저장. 왜 아웃게임 컨트롤러에서 작성하냐? -- 닉네임 생성이나, 채팅과 같은 공통적인 작업이 있을 때 적용하기 위해 아웃게임 컨..

[UI] - 닉네임 생성(금칙어 적용) - 구글 시트 URL로 받아오기

지난 번에 특수문자와, 이모티콘을 제한시켰다. 이번에는 욕이나, 특정인물 등.. 게임에서 사용하지 못하는 언어들을 제한시켜보자. 1. 구글 시트에 금지어 리스트들을 저장 시켜 둔  후2. 해당 정보들을 받아와 금칙어 처리를 하자.  ⚪️두가지의 방법이 있다.⚪️1번째 방법 (실시간 Google Sheets 데이터 가져오기)2번째 방법 (로컬 txt 파일 사용) - 다음장에 이어...  ❗️❗️두가지 방법의 차이점❗️❗️ 인터넷 연결필요불필요실시간 반영즉시 반영수동으로 업데이트 필요 (파일 갱신)성능실시간 네트워크 요청 때문에 느릴 수 있음빠름 (네트워크 요청 없음)유연성Google Sheets에서 금지어 수정 후 바로 반영 가능수정 후 다시 txt 파일을 새로 받아와야 함   1번 방법 (실시간 Goog..

[UI] - 닉네임 생성(특수문자,이모티콘 제한)

지난 시간에 닉네임 생성을 했었는데 닉네임을 생성할 때 특수문자나, 이모티콘과 같은 특수한 문자를 넣어도 닉네임이 생성이 되었다.  닉네임 생성시에 8글자 제한 및 특수문자와 이모티콘을 제한시켜보자.  1. 공지 추가   2. 스크립트 수정 (LobbyManager.cs) 네임 스페이스 추가 using System.Text.RegularExpressions; 네임스페이스는 Regex 클래스를 사용하기 위한 것이다.   코드 작성   if(!char.IsLetterOrDigit(tmp) && char.IsWhiteSpace(tmp)) char.IsLetterOrDigit(tmp)목적: 주어진 문자가 알파벳(대소문자 구분)이나 숫자(0-9)인지를 확인한다.동작:IsLetterOrDigit 함수는 해당 문자가..

[UI] - 닉네임 생성(PlayerPrefs)

PlayerPrefs를 사용해 로컬에서 저장하는 닉네임을 생성해보자.  PlayerPrefs에 관한 글링크 -  로비 씬에서 닉네임 생성 후 -> 메인 씬으로 오는 구조로 만들어보자.  1. 로비 씬 생성    2. 씬에 필요한 객체 추가(이벤트 시스템, UI, 매니저)     3. 로비 매니저 스크립트 추가 및 수정 사용할 변수 추가   초기화    닉네임 입력 및 생성 버튼   페이드  효과   씬 전환   4. 객체 참조   5. 씬 추가해주기   6. 메인 씬에서 닉네임 사용   결과

[UI] - 절전모드에서 배터리, 와이파이 표시

지난시간엔 절전모드 창을 만들어서 시간관련과 해당 로직들을 처리했다. 이번엔 절전모드가 실행되는 시간동안에 배터리와 와이파이 상태등을 보여주는 처리를 하자.  1. 팝업에서 와이파이 및 배터리 추가   배터리, 와이파이 각종 상태 이미지 추가    2. 스크립트 수정 - UIViewPowerSavion.cs 변수 추가           결과

728x90