* 기존 UI 탬플릿에서 범용기능을 포함한 DefaultPakage 형태로 변경함
UI prefab뿐 아니라 범용으로 사용되는 스크립트들도 포함함
* 기본 설치항목 (textmeshpro) 설치 유무 검사 방법 찾아보기. (required는 using으로 아는데..)
* 추가된 태그 유지되는지 알아보기
1. 설명
- 신규 프로젝트 생성시 UI 구성을 보다 빠르게 하기 위해 기본 UI들을 Prefab 화 하는 프로젝트 생성
- 기본 UI들을 asset으로 묶어, 신규 프로젝트에서는 import 하여 사용
- 각 UI 마다 태그명을 달리하여, 추후 일괄관리가 용이하도록함.
- OpenSource 업로드 보다는, 우리가 사용하기 편하도록 개발
- UI 뿐이 아니라, 전반적인 편의를 위한 Util 등도 추가.
- OVR, GVR, PVR에 관계없이, 범용적으로 사용할 수 있도록 개발
=> 즉 기본 raycaster 나 input module이 설정되어 있음.
=> 미리 설정할 수 없는 이유는, 프로젝트별로 OVR만 사용하더라도, PVR등을 모두
import 해야만 하기에 불필요함.
* 필수 사항 : TextMesh Pro 가 설치되어 있어야 함
* 주의 사항 : TextMesh Pro를 미리 프로젝트에 추가 후 이 어셋을 추가할것.
- 면접의신 에서 사용중인 LogManager 및 Utilities.cs 를 이미 추가한 경우
이 어셋을 import시, 두 항목을 제외하고 import 할것 (이 패키지에 포함되어 있음)
- EasyMovieTexture Asset을 미리 import 한 경우, 이 Asset 추가시 제외하고 import 할것
(이 패키지에 포함되어 있음)
- Font/Spoqa Han Sans Regular SDF.asset 이 이미 있는경우, 이 Asset import시
제외하고 import 할 것. (이 패키지에 포함되어 있음)
2. Asset 구조
- Resources -> Mint_DefaultPackage 에 하위폴더로 존재
- Prefabs
- 각 Prefab용도에 맟게 폴더 생성 후 배치
=> 예 : UI 폴더 하위에 UI 관련 Prefab 배치
=> 예 : Popup 폴더 하위에 Popup Prefab 배치
- Scripts
- 각 Prefab에 사용되는 스크립트들을 폴더별로 관리
=> 예 : UI 폴더 하위에, UI에서 사용하는 스크립트 추가
- Sprites
- 각 Prefab에 사용되는 Sprite 들을 폴더별로 관리
=> 예 : UI 폴더 하위에 UI에서 사용하는 몇몇 Sprite 이미지들 위치
3. 구성 기능 및 각 기능별 사용법 (업데이트 필요)
3.1. UI
3.1.1. Grid_LayoutGroup : Grid Layout
3.1.2. TextMesh Body : TextMesh 중 본문 내용
3.1.3. TextMesh Header : TextMesh 중 제목
3.1.4. UI BackButton : 취소 버튼 대응 (파란색 버튼)
=> (면접의신 : 로그인 버튼과 비슷)
3.1.5. UI CheckBox : 체크박스 버튼. 아이콘, text 포함
=> (면접의신 : 자동로그인 체크박스와 비슷)
3.1.6. UI CommonButton : 일반 버튼. 배경은 검은색
3.1.7. UI TopIconButton : 위 아이콘, 하단부 Text로 구성된 버튼
=> (면접의신 : 학과 버튼과 비슷)
3.1.8. UI InputFieldButton : 로그인 입력 필드 처럼, 아이콘 + textmesh 로 구성된 버튼
=> (면접의신 : 로그인 입력필드 비슷)
3.1.9. UI LeftIconButton : 좌측에 아이콘, 우측에 texhmesh로 구성된 버튼
3.1.10. UI MainBox : 검은색 배경을 가진, 가운데 페이지 느낌의 박스
=> (면접의신 : 로그인 페이지와 비슷)
3.1.11. UI OKButton : 주황색 배경을 가진 확인 대응 버튼
=> (면접의신 : 버퍼링 창 종료버튼과 비슷)
3.1.12. UI TopIconSubTextButton : 위 아이콘, 중단부 header text, 하단부 text로 구성된 버튼
=> (면접의신 : NIPA 메인버튼인 면접강의 버튼과 비슷)
3.1.13. UI RadioButton : 라디오 버튼 + Text 로 구성된 버튼. UIRadioButton 스크립트를 통해
다양한 제어가 가능.
3.1.13.1. UIRadioButton 스크립트
- SetSelectionDelegate : 선택, 미선택시 delegate 연결
- ChangeSelection : 선택, 미선택을 강제로 적용
- OnClick : 미리 prefab에 연결된 클릭이벤트 함수. 선택, 미선택 동작함
3.2. Popup
- 공용으로 사용할 팝업 prefab. 아이콘 변경 및 감춤, 버튼 표시 및 본문 text 변경 등 가능
3.2.1. 구성
- no animation 아이콘, animation 아이콘 (UI circle)
- 본문 text
- 닫기버튼, 확인, 취소 버튼
3.2.2. 사용 유의사항
- InitializePopup 함수를 호출하여 팝업 세부 설정 가능하며, 각 기능별 세팅 함수 별도 존재
확인 취소등 버튼의 경우, delegate 함수 설정필요함.
3.3. Keyboard
- 공용 키보드 Prefab. -
3.4. Login
- 회원가입, 로그인, 비밀번호 찾기, 자동로그인, 개인정보 동의가 있는 로그인 Prefab
3.4.1. 구성
3.4.1.1. 로그인
- 아이디 입력 필드
- 비밀번호 입력 필드
- 자동로그인 체크박스
- 로그인 버튼
- 회원가입 버튼
- 비밀번호 찾기 버튼
- 오류 메세지 표시 Text
3.4.1.1.1. 기능
- 로그인 버튼 클릭시, 아이디 (이메일) 입력 검증 및 비밀번호 입력 여부 판단
- 비밀번호 찾기/회원가입 각 버튼 클릭시 해당 UI 표시
- 오류 발생시 붉은 글씨의 에러 메세지 출력
- 자동로그인 체크박스 체크/체크해제 표시 기능
3.4.1.1.2. 사용 유의사항
- 자동로그인 체크박스 유무는 LoginManager 스크립트 -> IsAutoLoginChecked
- 로그인 버튼의 클릭 이벤트 함수 연결을 추가로 해주어야 함
3.4.1.2. 비밀번호 찾기
- 아이디 입력 필드
- 찾기 버튼
- 닫기 버튼
- 오류 메세지 표시 Text
3.4.1.2.1. 기능
- 찾기 버튼 클릭시 아이디 (이메일) 입력 검증
- 오류 발생시 붉은 글씨의 에러 메세지 출력
- X 버튼 클릭시 닫음
- 찾기버튼 클릭시, 오류가 없다면 이메일 전송 안내 팝업창 표시 후 닫기
=> 주석처리 되어있음. 실제 서버 연동 코드 추가 작성시 개발필요
3.4.1.2.2. 사용 유의사항
- 찾기 버튼의 클릭 이벤트 함수 연결을 추가로 해주어야 함
3.4.1.3. 회원가입
- 아이디 입력 필드
- 비밀번호 입력 필드
- 비밀번호 확인 입력 필드
- 회원가입 버튼
- 닫기 버튼
- 오류 메세지 표시 Text
3.4.1.3.1. 기능
- 회원가입 버튼 클릭시 아이디 (이메일), 비밀번호, 비밀번호 일치 입력 검증
- 오류 발생시 붉은 글씨의 에러 메세지 출력
- X 버튼 클릭시 닫음
- 회원가입 버튼 클릭시, 오류가 없다면 환영메세지 팝업창 표시 후 닫기
=> 주석처리 되어있음. 실제 서버 연동 코드 추가 작성시 개발필요
3.4.1.3.2. 사용 유의사항
- 회원가입 버튼의 클릭 이벤트 함수 연결을 추가로 해주어야 함
3.5. Log모듈
- 면접의 신에서 사용중인 로그모듈
3.5.1. 사용 유의사항
- 로그 작성전, 프로그램 진입부에서 Initialize 함수 호출 필요 (로그 저장위치 설정)
3.6. Utilities
- 면접의 신에서 사용중인 유틸 기능중 일부
3.7. PrivacyPopup
- 이용약관 선택 팝업창
3.7.1. 사용 방법
- 동의, 동의안함 결과는 PrivacyPopupCanvas -> Privacy Inspector에 있는
PrivacyManager의 IsAgree 변수로 알 수 있음
- 이용약관 창 뒤의 오브젝트 클릭방지를 위해, m_pagecanvasAlpha 에 CanvasGroup 설정필요
- 창을 닫을경우 이전에 표시한 object를 다시 켜기 위해, PrivacyManager
m_beforeObject 에 코드로 값을 배정해야함 (옵션)
- 표시될 글자 내용을 추가, 삭제하기 위해서는, PrivacyPopupCanvas -> Privacy
->Scroll View -> Viewport -> Rect 안에 있는 textmesh 추가, 삭제필요
- 스크롤 속도 조절 : PrivacyPopupCanvas -> Privacy ->Scroll View
-> Scrollbar Vertical 의 Inspector 최하단
-> Scroll View Controller의 Scroll Speed 설정
3.8. Zenject_and_Service
- Zenject 및 범용적으로 사용가능한 서비스 모음 (arr 파일, dll 파일들 포함)
- https://mintpot.synology.me:30000/boards/2/topics/265 참조
3.8.1. 구성
3.8.1.1. Android Directory Service : 안드로이드 경로 관련
3.8.1.2. AudioDataManager : 음성인식, 녹음 관련
3.8.1.3. AWSUploaderService : AWS 업로드 서비스 관련.
3.8.1.4. FadeEffectService : fade 효과
3.8.1.5. SqliteDatabaseService : DB 접속 관련 서비스 (로컬)
3.8.1.6. AndroidBinderService : 안드로이드 내부 정보를 가져오기 위한 서비스
3.8.1.7. WifiCheckService : 인터넷 연결유무 체크 서비스. 3.10. 참조
3.8.1.8. SharedDataService : 기존 DataContainerService 처럼, 스크립트에 관계없이
공용으로 사용할 Data 저장 및 활용
- 현재는 녹음파일 list 변수만 있음
3.8.1.8.1. GetRecordingFilePath : 녹음된 파일 리스트에서 원하는 index의
위치 리턴. 안드로이드의 경우 앞에 file://을 붙임
3.8.2. 사용 유의 사항
- Zenject 사용을 위해 각씬 Hierarchy -> 마우스 우클릭 -> Zenject -> Scene Context 추가
- 어플리케이션의 Project -> Assets -> Resources -> ProjectContext.prefab이 있어야 함
- 그외 각 서비스 사용법은 코드 참조 혹은 면접의신 참조
- 서비스 중 pico sdk를 사용하는 경우는 주석처리하였음 (AndroidBinderService)
- 3.8.1.2. AudioDataManager 의 무음구간 체크 유무를 설정할 수 있음. 체크하지 않을경우,
Decibel 값만 갱신함
3.9. MintDefaultOption
- 기존 MintOption 중, 범용적으로 사용가능한 옵션만 추가한 버전
3.9.1. 구성
3.9.1.1. 빌드옵션
- Use Wifi 체크박스 : wifi 사용여부 체크박스
* 실제 사용을 위해서는 해당 변수를 통한 코드 구현 필요
- Script Missing 체크 버튼 : 각 씬별 스크립트 missing 부분 체크
3.9.1.2. 로그옵션
- Console Enable 체크박스 : 로그내용을 console에 작성여부
- Current Log Level : Common / Error / No write로, 로그 작성 레벨 설정
- Save File Period : Day / Hour / Minute / Second로 로그 파일 작성 주기
3.9.1.3. STT옵션
- Use Naver STT : 네이버 STT 사용여부
- Naver App ID : 네이버 STT 아이디
- Google STT Info : 구글 STT 서버 주소
3.9.1.4. AWS옵션
- 기존 면접의 신과 동일
3.10. Wifi 연결 (인터넷 연결 체크) 서비스
- 기존 면접의신 기능인 wifi 체크 기능을 서비스로 추출. while문을 통해 무한으로 wifi 체크를 함
- wifi 연결 체크 및 ping 체크 (To google)을 진행함
3.10.1. 사용법
- 사용할 스크립트에서 Inject를 통해 IWifiCheckService를 Injection 받아야 함
- Awake 함수 등에서 IWifiCheckService의 이벤트 등록 필요
- m_wifiErrorEventHandler : wifi 연결 실패시, string 매개변수와 함께 이벤트 발생
-> 이벤트가 한번 발생했다면, 연결 성공이 이루어질때까지 다시 발생치 않음
- m_wifiConnectedEventHandler : wifi 연결 성공시 이벤트 발생
- Initialize 함수 인자값으로 MonoBehaviour 전달
- StartWifiCheck 함수 호출
- wifi 연결 체크 기능 켜기
- 인자값으로 체크 주기 시간, 타임아웃 시간 설정가능 (기본 1초)
- StopWifiCheck 호출 (Scene 이동시, 중지를 원할시)
- wifi 연결 체크 기능 끄기
3.11. 영상재생 컨트롤 팝업창
- 기존 면접의신에서 사용하던 영상 팝업창 및 seek bar 기능이 추가된 팝업창 구현
- 기존 팝업창, Seek Bar 팝업창을 골라서 띄울수 있음 (동시도 가능)
- VideoControlPopupManager -> SetPopupType를 통해 설정가능
- COMMON_MENU : 기존 팝업창
- SEEKBAR_MENU : SeekBar 팝업창
- ALL_MENU : 위의 두가지 팝업창 동시
3.11.1. 기존 팝업창 : 상호작용 콘텐츠에 적합
- 타이머 : 기존 면접의신 답변 타이머 UI
- 마이크 : 기존 면접의신 데시벨에 따른 목소리 입력 UI
- 볼륨 Up : 기기 볼륨 증가. pico의 경우 별도 코드 수정필요
- 볼륨 Down : 기기 볼륨 감소. pico의 경우 별도 코드 수정 필요
- 다시듣기 : 영상 처음부터 다시 재생. 부가 기능은 코드 구현 필요
- 홈으로 : 홈으로 이동
- 뒤로가기 : 뒤로가기 이동
- Header Text : 표시할 텍스트
3.11.1.1. 사용법
- 홈으로 와 뒤로가기는 하나만 사용하면 되므로, 실제 사용시 UI 감춤, 배경길이 조절등 필요
- 타이머, 마이크 UI는 쓰지 않을경우 UI 감춤 및 배경 크기 조절 필요
- 실제 사용처에서 팝업창 on, off 구현필요. 3.12 영상재생 기능에는 구현되어 있음
- 팝업창에서 시선이 밖으로 나갈경우, 팝업창 자동 꺼짐 기능 있음
- 버튼 Delegation 등록을 통해 각 버튼 클릭시 콜백함수 등록 가능
3.11.2. SeekBar 팝업창 : 시청형 콘텐츠에 적합
- 10초 뒤로 : 영상 10초 뒤로 이동 재생
- 재생/일시정지 : 영상 재생/일시정지
- 멈춤 : 영상 재생 중지
- 10초 앞으로 : 영상 10초 앞으로 이동 재생
- Seek Bar 클릭 : 클릭동작을 통해 원하는 위치로 이동하여 영상재생
- 영상재생 시간 표시 : 현재 재생중인 시간 표시
- Header Text : 표시할 텍스트
3.11.2.1. 사용법
- 버튼 Delegation 등록을 통해 각 버튼 클릭시 콜백함수 등록 가능
- 영상 재생 시작시, max seek value 설정 필요
- 영상 재생중, seek value 변경을 주기적으로 할필요 있음
- 10초 이동은, 10초 뿐 아니라 원하는 시간으로 변경 가능
(텍스트 변경 및 해당 버튼 클릭 이벤트에 인자값 수정 필요)
- 실제 사용처에서 팝업창 on, off 구현필요. 3.12 영상재생 기능에는 구현되어 있음
- 팝업창에서 시선이 밖으로 나갈경우, 팝업창 자동 꺼짐 기능 있음
- 사용하지 않는 버튼의 경우 UI 및 길이 조절 필요
3.12. 영상재생 기능 (2D, VR영상)
- 2D 영상과 VR 영상 재생기능, 음성 녹음기능, 버퍼링 팝업창 표시 포함
- 임의로 구현된 VideoPropertyModel 클래스의 맴버변수 항목을 이용하여 영상재생
- 따라서 시나리오에 따라, 코드가 대폭 수정될 가능성이 있음.
(영상 재생 위치 가져오는 부분들)
- 2D, VR 영상재생 스크립트의 공통기능은 부모 스크립트인 ParentVideoPlayer에 기능구현 되어 있음
- 녹음시, 마이크, 답변타이머 UI 동작여부, 무음구간 체크 유무 설정 가능함.
- ParentVideoPlayer 스크립트에서, 대부분의 기능 동작함.
3.12.1. VideoPropertyModel
- 영상재생에 필요한 정보를 담은 클래스로, 임의로 구성함
- 재생 시나리오 및 DB 설계등이 변경될 시, 2D, VR 영상 재생 스크립트 수정 필요함.
- List<VideoPropertyModel> ChildVideoList : 꼬리물기 자식 영상 리스트
- VideoFullPath : 영상 재생 full path
- SeekTime : 영상 재생 후, 일정시간동안 대기를 위한 SeekTime. 설정 안해도 무방함
- VideoPlayType : 영상 재생 후 대기에 대한 타입 설정
- NO_WAIT : 영상재생 후 바로 다음동작 진행
- WAIT_SEEKTIME : 위의 SeekTime 만큼 대기 후 다음동작 진행
- WAIT_PLAY_END : 영상재생이 종료 된 후 다음동작 진행
- RecordingType : 해당 영상의 녹음 타입 설정
- NO_RECORD : 음성녹음 진행치 않음
- NO_STT_RECORD : STT 가 아닌 일반 녹음 진행
- STT_RECORD : STT 녹음 진행
- List<string> STT_KeywordList : STT 녹음에 사용될 키워드 모음
- 부모 영상 : 자식영상의 모든 키워드 포함
- 자식 영상 : 부모 영상의 키워드 중, 본인에 해당하는 키워드만 포함
- IsNeedToPlayChildVideo : STT 결과후, 매칭되는 자식영상 재생여부 설정
- 면접의 신은 자식영상을 재생, SK 직무교육은 재생치 않으므로 둘다 만족하기 위함.
3.12.1.1. 사용법
- 이 클래스의 세팅을 통해 다양한 영상재생 프로세스 구현가능
- 기존 면접의 신과 다르게, 각 영상별 녹음 여부 설정 가능
- 각 영상별 꼬리물기 자 질문 영상 재생여부 설정가능
3.12.2. 2D
- TwoDVideo_Example 스크립트 참조
- List에 담긴 영상 갯수만큼 재생
- VideoPropertyModel 맴버변수 설정에 따라, 녹음 진행 여부, STT 사용여부 등 동작
- 버퍼링 팝업창 연동 되어 있음. (단, 녹음중 버퍼링 발생 여부 판단은 하지 않음)
- VideoPropertyModel 맴버변수에 설정된 꼬리물기 자 질문 영상 재생 가능
- 영상 종료시, VideoFinishedType 에 따른 종료 형식 설정함
- ALL_VIDEO_PLAYED : 모든비디오 재생 후 정상종료
- BUFFERING_FINISH : 버퍼링 창 -> 확인버튼 클릭으로 인한 종료
- BACKBUTTON_FINISH : 영상 팝업창 뒤로가기 클릭 후 종료
- GOHOME_FINISH : 영상 찹업창 홈으로 클릭 후 종료
3.12.3. VR (듣기 영상 재생 기능 추가 2020.06.24 댓글에 내용 추가)
- ThreeDVideo_Example 스크립트 참조
- 2D 영상 기능 구현 + @ 로 구성되어 있음
- 버퍼링 감소를 위한 다음영상 미리 로딩 기능 구현 (2D 영상은 해당기능 없음)
- 영상 전환시, 디졸브 효과 구현됨 (2D 영상은 디졸브 없음)
* 녹음파일의 경우, 3.8.1.8. 에 명시한 SharedDataService의 녹음파일
List에 항목을 담음. (ParentVideoPlayer->RecordingFinished함수)
3.13. 버튼 강조효과 (sprite 변경 필요 - 가로 직사각형)
- 일반적인 버튼 강조효과
- ButtonEmphasis 스크립트를 활용하여, 각 버튼 이벤트 연결하여 사용
- 버튼의 위치, 크기를 파악하여, 강조효과 이미지(테두리)를 배치함.
- 정사각형, 가로 직사각형, 세로 직사각형 sprite가 있음
- 가로 직사각형 Sprite 교체 필요. 현재는 가로형 이미지가 없이, 정사각형을
옆으로 늘린 형태라 사이즈가 맞지 않음.
3.13.1. 함수 구성
- OnButtonPointerEnter_ChangeFontSize
- 버튼의 PointEnter 에 연결
- 인자값 : TextMeshProUGUI
- PointEnter시 폰트 사이즈 2 증가
- 인자값으로 받은 TextMeshProUGUI를 내부 list 변수에 add
- OnButtonPointerExit_ChangeFontSize
- 버튼의 PointExit 에 연결
- 인자값 : TextMeshProUGUI
- PointExit시 폰트 사이즈 2 감소
- 내부 list 변수에서 인자값으로 받은 TextMeshProUGUI를 remove
- OnButtonPointerEnter_ChangeIconSize
- 버튼의 PointEnter 에 연결
- 인자값 : 버튼의 아이콘 Image
- PointEnter시 이미지 사이즈 2 증가
- 인자값으로 받은 Image를 내부 list 변수에 add
- OnButtonPointerExit_ChangeIconSize
- 버튼의 PointExit 에 연결
- 인자값 : 버튼의 아이콘 Image
- PointEnter시 이미지 사이즈 2 감소
- 인자값으로 받은 Image를 내부 list 변수에서 remove
- OnSquareButtonPointerEnter_Emphasis
- 정사각형 버튼 PointEnter 에 연결
- 인자값 : 적용할 버튼 GameObject
- PointEnter시, 적용할 버튼의 위치, 사이즈를 고려하여
정사각형 흰 테두리를 보여줌
- OnHorizonLongButtonPointerEnter_Emphasis
- 가로 직사각형 버튼 PointEnter 에 연결
- 인자값 : 적용할 버튼 GameObject
- PointEnter시, 적용할 버튼의 위치, 사이즈를 고려하여
가로 직사각형 흰 테두리를 보여줌
- OnVerticalLongButtonPointerEnter_Emphasis
- 세로 직사각형 버튼 PointEnter 에 연결
- 인자값 : 적용할 버튼 GameObject
- PointEnter시, 적용할 버튼의 위치, 사이즈를 고려하여
세로 직사각형 흰 테두리를 보여줌
- OnButtonPointerExit_Emphasis
- 정사각형, 세로 직사각형, 가로 직사각형 테두리를 감춤
- ResetAllEmphasis
- text 크기, 아이콘 크기를 전체 초기화 하는 함수
- 보통 point enter 후 pointer exit가 호출되기에 초기화가 진행됨
- 그러나 컨트롤러 뒤로가기 등으로 인해 pointer exit가 진행되지 않고
다음동작을 할 경우, text나 아이콘 크기가 커진 상태로 남게됨.
- 따라서 뒤로가기 함수등에서 이 함수를 호출하여 전체 초기화 진행필요.
3.14. PPT 뷰어 기능
- SK 직무교육에서 사용하던 PPT 뷰어 기능
3.14.1. 기능
- 좌, 우 페이지 이동버튼 기능 추가
- 기존처럼 마우스 클릭을 통해 페이지 탐색 가능
- 위의 두 기능은 택1 하여 동작 가능
- 좌, 우 페이지 이동버튼 사용시, 단순 클릭을 통한 페이지 이동은 안됨
- 클릭을 통한 페이지 탐색의 경우, 좌, 우 페이지 이동버튼이 감춰짐
- 기본적으로 PPT Index를 현재페이지 index / 전체페이지 index로 표시하나,
사용하지 않을경우, Text UI를 감출 필요가 있음
3.14.2. 사용법
- PPTImageViewer->Initialize 호출하여, 페이지 넘김 이동 타입 설정
- PPTImageViewer->SetPPTImages 에 표시할 PPT Sprite 리스트 넘김
- 상황에 맞게 PPTImageViewer->PPTImage_VisibleControl 을 통해 보임/감춤 조절
- 필요시, PPTImageViewer->GetCurrentPPTIndex를 통해 현재 PPT index를 알수 있음
- 마우스 클릭으로 페이지 이동시, 사용 SDK에 따라 PPTImageViewer->Update 함수 코드 수정 필요
3.15. 배터리 정보 표시 기능
- prefab을 Scene에 추가시, Scene이 로딩되면 자동실행됨
- Coroutine을 통해 배터리 정보를 1분 단위로 갱신
- 해당 Object가 꺼질경우 (OnDisable) 배터리 정보 취득 중지함
3.16. Focus 데이터
- 면접의 신 시선처리 기능
- Object UI 개수를 늘리면, 추적하는 Object도 증가하며, 계산됨
3.16.1. 사용법 : FocusDataManager 스크립트
- StartSearchingFocusData : 시선처리 데이터 분석 시작
- EndSearchingFocusData : 시선처리 데이터 분석 종료
- GetPercentData : float[] 으로 구성된 결과데이터
=> * 100 을 해야 퍼센트가 되며, 배열 갯수는 시선처리 object 개수임
- GetOutOfFocusTimer : 시선처리가 벗어난 시간
- SetResetOutOfFocusTimer : 시선처리가 벗어난 시간 초기화
- GetCurrentFocusObjectName : 현재 시선이 가있는 object 이름
3.17. 목소리 크기 및 타이머 UI
- 면접의 신 목소리 크기 및 타이머 UI
3.17.1. 사용법 : AudioRecordingUI 스크립트
- UpdateDecibelDataGraph : 데시벨을 입력받아, 목소리 크기 UI 깜박임 조절
- DecibelDataGraphVisibleControl : 목소리 크기 UI 보임/감춤
- UpdateAnswerTimer : 타이머 UI 표시 변경
- 인자값으로 현재 초 전달필요 (예 : 1, 2.....)
- Text에는 90초, 89초 ... 식으로 역카운트 됨
- AnswerTimerVisibleControl 타이머 UI 보임/감춤
- SetAnswerTimerText : 답변 타이머 UI의 Text를 임의로 변경. 단,
UpdateAnswerTimer 호출시 자동으로 x초 로 변경됨
- ChangeUIColor : 답변시간 타이머, 목소리크기 배경색 변경 (회색/핑크색)
3.18. EffectSound
- 클릭, Point Enter, Send, Back 항목에 대한 EffectSound 출력
- 필요하다면 추가 필요.
3.18.1. 사용법
- UI 추가 후 각 이벤트 별 콜백함수 등록 (예 : 클릭, PointEnter..)
- EffectSoundManager->PlayEffectSound 함수 호출하여 원하는 효과음 재생
-> 인자값 : - EffectSoundType
- SOUND_CLICK
- SOUND_BACK
- SOUND_POINT_ENTER
- SOUND_SEND
- volumn : 재생 볼륨. 기본값 0.3
3.19. PlayAudioFile
- 녹음파일 재생 스크립트. 사실상 소리 파일 재생 기능 담당
- PlayAudioFileManager 스크립트 사용
3.19.1. 설명
- Initialize : 재생 Audio 완료시 호출할 delegate 설정 및 초기화
- PlayAudioFile : 파일 fullpath 인자값을 받아, 재생함.
- PauseAudioFile : 재생중인 Audio 일시정지
- ResumeAudioFile : 일시정지 중인 Audio 이어 재생
- StopAudioFile : 재생중인 Audio 정지
3.19.2. 사용법
- Initialize 함수 호출하여, Audio 재생완료시 delegate 등록 및 초기화
- PlayAudioFile 인자값에 재생할 audio fullpath 입력시 재생됨
- 필요에 따라 (예 : 버퍼링시) Pause, Resume, StopAudioFile 호출
- Audio 재생 완료 후 호출되는 delegate 함수에서 후속 동작
* 기존에 없던 pause, resume 등을 넣은 이유
- 영상 버퍼링등 필요에 따라 음성 또한 pause, resume 가능토록 구현
* 필요에 따라 UI 및 기능 추가 필요.
4. 전반적인 사용방법
- 첨부파일의 Mint_DefaultPackage.unitypackage 를 다운로드
- 프로젝트에서, Import
- 사용할 SDK에 맞는 카메라, input module 등 설정 필요
- 버튼의 경우 이벤트를 필요에 따라 추가 또는 연결
- 배경색을 바꾸길 원할경우, Sprite에서 변경시,
=> 기본 버튼색상 일괄변경 가능
=> 기본 background 색상 일괄변경 가능
'Unity' 카테고리의 다른 글
| Zenject Service 사용법 (0) | 2022.03.24 |
|---|---|
| Zenject Factory 사용법 (0) | 2022.03.24 |
| 코드난독화 어셋 사용법 (0) | 2022.03.24 |
| StopCoroutine, StartCoroutine 관련 (0) | 2022.03.24 |
| Pico VR 기기 컨트롤러 UI 연동 (0) | 2022.03.24 |