포스트

VRChat 월드 제작 (U# / UdonSharp)

VRChat 월드 제작 (U# / UdonSharp)

2024-04-09. 02:28 : 글 계승
2022-01-28-USharp-Fog : 🌔 VRChat 안개 (Fog),
2022-06-28-USharp-ContextMenu : 🌔 VRChat 월드 에디터 테스트 시, ContextMenu Attribute

💫 라이브 스트리밍 용 VRChat 컨텐츠 제작 시 신경 쓸 점


🫧 VRChat

  • 스트리머와 참가자의 PC/VR 플레이 유무
  • 월드 인스턴스 최대 인원 제한

🫧 기획, 버그 가능성

  • 수동 VS 자동화
    • 돌발 상황에 대비하여 수동으로 만들거나, 제한을 여유롭게 두기
    • ‘뭐 잘못 눌렀어요’, 제한, 방지, 대책
  • 테스트와 리허설 자주
    • 기능 자체의 버그와, 기획의 의도 확인
  • 조작키
    • 예를 들어 스태프 전용 키를 자주 누르는 키로 설정하지 말기
    • 혹은 좀 더 복잡하게 만들던지

🫧 라이팅, 렌더링

  • 아바타가 조명을 제대로 받는지
    • LocalPlayer, Player Layer만 잡는 RealTime 라이트
    • 라이트 프로브
  • 리플렉션 프로브
  • 포스트 프로세싱

🫧 영상, UI

  • 채팅창 위치 고려를 고려하여 UI 제작
  • (버추얼 한정) 화면에 띄워지는 아바타 위치를 고려하여 UI 제작

  • 대기 화면 유무
  • 로고를 UI로 띄울지 여부

  • 글꼴
    • 글꼴 저작권
    • 한자 필요할 경우 한자 지원하는 글꼴로

🫧 비디오 플레이어

  • 딜레이가 많이 길다
  • 카메라로 비디오 플레이어 스크린을 찍으면, 가끔 프레임이 끊겨보인다 (검은 화면)
  • 비디오 플레이어 소리 잘 나오는지
  • URL 전부 제대로 입력했는지

🫧 사운드

  • 플레이어 보이스 잘 들리는지 (기본 보이스 세팅, 증폭 필요한지)
  • SFX, BGM, 비디오 플레이어 소리 잘 나오는지

🫧 카메라

  • 포스트 프로세싱
  • 들고다니는 유동 카메라
    • SmartSync (LightSync)
    • 렌더 텍스쳐
    • 카메라를 들고 텔레포트를 하면, 싱크 오브젝트 특성 상 이동하는 위치 사이를 Lerp하게 보게 된다.
  • 고정 카메라
    • 아바타가 해당 위치에서 의도한 대로 적절히 보이는지

🫧 그 외

  • 프로젝트 후기는 바로바로 작성

💫 팁


🫧 오류 로그는 안뜨는데, 원하는 대로 작동안할 때

코드 잘못짜서 생긴 논리 오류를 제외하고,

  1. 호출하고자하는 CustomEvent가 Public 접근 제한자인지 확인한다
  2. 똑같은 UdonBehaiviour가 여러 개 들어가있는지 확인한다 (프리팹에 Udon 추가하는 과정에서 주로 발생)

🫧 Udon 싱크 크기

🫧 UI 인터렉션 가능하게 하는 조건 3가지

  1. 오브젝트 Layer Default
  2. VRC UI Sharp 컴포넌트
  3. Box Collider

🫧 VRChat World에서 VideoPlayer로 데이터 불러오기

🫧 Fog

Fog 안켜둔 채로 빌드하면, 런타임에서 Fog를 켜도 적용이 안됌.
켜둔 채로 빌드하고, 월드 들어오자마자 꺼주기.

220128 기준.

🫧 ContextMenu

ContextMenu 사용 시,
오브젝트를 껐다키는 등의 단순 명령들은 잘 실행되지만,
변수 값을 변경하는 등의 명령은 제대로 실행되지 않음.

1
2
3
4
5
6
int temp = 0;

void Update() { Debug.Log(temp); }

[ContextMenu("Add")]
void Add() { temp++; Debug.Log(temp); }

예를 들어, 위 같은 코드에서 Add
SendCustomEvent로 호출하면 Add에서 1, Update에서 1이 찍히는데,
ContextMenu로 호출하면 Add에서 1, Update에서 0이 찍힌다.

테스트 시 주의

220628 기준.

🫧 오버레이 UI

Overlay 캔버스로 만들어도 되지만, VRChat에서 메뉴(R키)를 조작할 때 Overlay 캔버스가 전부 꺼지는 문제가 종종 있음
-> 대신 DepthOnly 카메라로 WorldSpace 캔버스를 찍어서 위에 띄우기

🫧 ?

SyncMode(None)오브젝트 토글 우동 A
우동 B가 포함된 오브젝트를 자식으로 가지는 부모 오브젝트 C를 활성화 시킬 때,

우동 BSyncMode(Continue or Manual)이면 우동 B 동작안함
우동 BSyncMode(None)이면 우동 B 동작함

다시말해,
ASyncMode(Continue or Manual)이면 BSyncMode가 뭐든간에 B가 정상적으로 동작
ASyncMode(None)일 때, BSyncMove(Continue or Manual)라면 B가 동작안함

🫧 메모

  • VRC, 영화 자막
  • Light Probes Volme Settings
  • Light Probe Group
  • Occlusion Area
  • Editor Only 태그 활용
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.