9일째: 디지털 시계와 환영판에서 배운 문자 표시와 이미지 정보 획득

이 글은 어드벤트 달력'[VCD] 테마파크 만들어.의 9일째 기사다.

이번 내용


이번에는 디지털 시계와 환영판을 만들면서 다음과 같은 내용을 배운다.
· VCD 전용 Text 객체 사용
• 자신의 가상 이미지 정보를 얻는 방법

VIText 설정


텍스트 처리를 위해 VCD를 사용하려면 VCD 전용 Text 객체를 사용합니다.
자세한 내용은 아래 공식 페이지를 참조하십시오.
VCI Text
이번에는 두 시간의 표시용과 이름의 표시용을 하고 싶습니다.
VCD 텍스트는Hierarchy를 오른쪽 단추로 > VCD > Text를 누르면 만들 수 있습니다.
처음 만들 때 아래 창이 표시됩니다. 위에서 순서대로 하세요.

그런 다음 객체 "Text"를 만듭니다.왜 그런지 모르겠지만 선택한 자리가 아닌 루트에 제작됐으니 적당한 곳으로 이동해 주세요.
다양한 설정 항목이 있지만, V 캐스트에 반영되지 않은 항목도 많다.
자세한 내용은 관영 위키를 보십시오.
이번에는 글꼴 크기, 색깔, 굵기를 바꾸었다.
시계는 하나뿐이지만 환영판의 부분은 오른쪽 정렬, 중앙과 왼쪽 정렬을 구분하고 싶어 세 개로 나뉘어 겹친다.
위에는 고정 문자'환영'이고, 가운데는 사용자 이름을 나타내는 것이며, 아래는 고정 문자'요지'이다.

코드 설정


다음은 V cast 및 편집기 작업입니다.

시계 표시(다중 동작 확인되지 않음)


이번에는 텍스트를 표시하기 위해 다음 페이지를 참고하여 코드를 쓰십시오
vci.assets
(SetText라는 함수 사용)
상기 페이지를 참고하여 만든 코드는 다음과 같다.
---すべてのユーザーで毎フレーム呼ばれる
function updateAll()
  -- Text_Clockに時間を表示する。"%H:%M:%S"は00:00:00のフォーマットで文字を出力するということ
  vci.assets.SetText("Text_Clock",os.date("%H:%M:%S"))
end
업데이트라는 VCD 소유자만 실행하는 함수ALL_SetText라는 방법도 있지만 소유자가 다룬다→다른 사람에게 반영하는 형태일 수 있으므로 각자가 처리한 예는 비교적 가볍다.
또한 상술한 예는 시간대가 다르더라도 각자 정확한 시간이 있을 수 있다(확인 중)
■ 보충: 처리 경감
이번에는 프레임당 처리지만 실제로는 초 단위만 보이기 때문에 대부분의 프레임은 같은 내용으로 덮어쓰는 쓸모없는 처리이다.1초에 한 번 갱신하거나 0.5초에 한 번 갱신하면 결과는 기본적으로 바뀌지 않고 텍스트 갱신 횟수를 줄일 수 있다.(자세한 내용은 여기. 참조
시도는 안 해봤지만 연골소라는 기능으로도 만들 수 있을 것 같아요.
하지만 이번과 달리 처리가 무거운 상황에서 처리된 프레임을 줄이면 오히려 다른 프레임보다 처리된 프레임만 무거워 귀찮을 수 있다.하면서 조정해.

시작 보드의 이름 표시(다중 동작 미확인)


이번에는 각 사용자의 이름을 표시하기 위해 아래 페이지를 참고하여 코드를 씁니다.
vci.studio(ExportStudio)
(GetLocalAvatar 함수 사용)
상기 페이지를 참고하여 다음과 같이 제작한다.
-- コードを実行しているアバターの情報を取得
local avator = vci.studio.GetLocalAvatar()
-- 取得した名前をTextに反映
vci.assets.SetText("Text_Welcome",avator.GetName())
하지만 아바타를 읽을 때 GetLocal Avatar()는 얻을 수 없고, nil(공)은 돌아올 수 있습니다.
따라서 각 프레임이 가상 이미지 정보를 얻을 수 있는지 확인하고 코드를 다음과 같이 수정하여 가상 이미지 정보를 얻은 후에 이름을 반영하도록 한다.(시계의 전선도 포함)
--名前を反映したかのフラグ
local isLoadedName = false

---アイテムを生成したユーザーで毎フレーム呼ばれる
function updateAll()
  --名前を反映したフラグが立っていなければ処理を実施
  if not isLoadedName then
    local avator = vci.studio.GetLocalAvatar()
    --アバターが取得できてれば処理を実施
    if avator then
      -- 取得した名前をTextに反映
      vci.assets.SetText("Text_Welcome",avator.GetName())
      --名前を取得したフラグを立てる
      isLoadedName = true
    end
  end
  -- Text_Clockに時間を表示する。"%H:%M:%S"は00:00:00のフォーマットで文字を出力するということ
  vci.assets.SetText("Text_Clock",os.date("%H:%M:%S"))
end
■ 보충
아마 이번처럼'조건에 맞을 때까지 반복해서 실시하고 조건에 맞으면 한 번만 실시하고 이후에는 아무것도 하지 않는다'는 처리가 조금 어렵지만 연골소라는 기능을 사용해서 쓰는 게 좋을 것 같아요.
만약 시간이 있다면, 나도 코르크의 예를 좀 쓰고 싶다

동작 확인


이후 V 캐스트에 들어가 실제 동작을 확인하면 완성된다.
※ 이번엔 다기능 동작을 확인할 수 없습니다.

이번에는 이 정도.

끝맺다


어때요?
이번에 자신의 가상 이미지 정보를 얻었는데 다른 함수를 사용하면 룸 내의 가상 이미지의 위치 정보와 이름 정보를 얻을 수 있다.
다음에는 스카이돔 만드는 법을 쓰려고 합니다.

좋은 웹페이지 즐겨찾기