산사 VR에서도 세컨드라이프처럼 사용자의 텍스트 채팅 내용을 인식할 수 있는데요.
channel 0번을 사용하는 것으로 보아 채널 사용원리는 동일한 것 같습니다.
세컨드라이프에서도 채널 0번은 일반 사용자가 채팅창에서 볼 수 있는 채널이거든요.
0번 채널로부터 메시지를 수신받는 함수는 아래와 같습니다.
ScenePrivate.Chat.Subscribe(0, null, ChatMessage);
다만 ChatMessage 라는 콜백 함수의 이름을 함께 전달해 주는데요.
세컨드라이프와는 달리 콜백 함수의 이름은 자유롭게 정의하실 수 있습니다.
콜백 함수는 아래와 같이 정의하는데요.
여기서 중요한 파라미터는 3개로서
Channel 은 요청된 채널로서 여기서는 당연히 0이고,
SourceId 는 채팅한 사람 또는 오브젝트(아마도) 의 아이디값으로 추정됩니다.
Message 는 채팅한 메시지 문구를 의미하지요.
private void ChatMessage(int Channel, string Source, SessionId SourceId, ScriptId SourceScriptId, string Message)
{
: 처리할 내용
}
완성본 소스입니다.
using Sansar.Script;
using Sansar.Simulation;
public class ChatScript : SceneObjectScript
{
public override void Init()
{
// 채팅 채널 0번으로부터 메시지 송신을 대기하고 메시지가 송신되면
// ChatMessage 콜백함수를 실행합니다.
ScenePrivate.Chat.Subscribe(0, null, ChatMessage);
}
// ChatMessage 콜백 함수
private void ChatMessage(int Channel, string Source, SessionId SourceId, ScriptId SourceScriptId, string Message)
{
// 채팅 메시지를 전송한 사람을 찾습니다.
AgentPrivate Agent = ScenePrivate.FindAgent(SourceId);
// 해당 사용자의 다이얼로그를 변수에 저장.
ModalDialog Dlg = Agent.Client.UI.ModalDialog;
// 팝업창에 보여줍니다.
Dlg.Show(Message + "라고 타이핑하셨군요", "확인", "");
}
}
위 스크립트를 산사에 업로드, 오브젝트에 적용하고 빌드한 다음,
채팅창을 열고 내용을 타이핑하면,
아래와 같은 팝업창이 뜨는 것이지요.
'가상세계 산사VR' 카테고리의 다른 글
가상세계 산사VR, Cray world, 극기훈련 컨텐츠?! (0) | 2020.09.20 |
---|---|
산사VR, 오브젝트간 통신 (0) | 2020.09.19 |
가상세계 산사 VR, 선택버튼 알아내기 (0) | 2020.09.19 |
가상세계 산사VR, Alert 스크립트 (0) | 2020.09.17 |
가상세계 산사VR, 채널을 눌러볼까요? (0) | 2020.09.12 |