버전

menu_open
Wwise Unity Integration Documentation
Unity WAAPI 클라이언트

2018.1 버전부터 Wwise Authoring API (WAAPI) 지원이 Unity 통합 안에 내장됩니다 (더 자세한 정보는 Wwise Authoring API (WAAPI) 사용하기)를 참조하세요).

AkWaapiClient 라는 클래스가 제공되며, 이 클래스를 사용하여 WAAPI 연결을 생성하고 WAAPI 호출을 만들기 시작할 수 있습니다. 다음 코드는 localhost를 사용하여 포트 8080에서 WAAPI를 연결합니다.

AkWaapiClient.Connect("127.0.0.1", 8080);

WAAPI 호출을 만들고 응답을 수신하려면 반드시 JSON 인자를 생성하고 파싱해야 합니다. Unity JsonUtility 클래스는 C# 클래스와 JSON 문자열을 쉽게 번역할 수 있게 해줍니다. 다음 클래스는 클래스에서 JSON 문자열을 만들고 JSON 문자열에서 클래스를 만드는 기능을 제공합니다.

public class WaapiJsonClassBase<T>
{
public override string ToString()
{
return JsonUtility.ToJson(this);
}
public static implicit operator string(WaapiJsonClassBase<T> obj)
{
return obj.ToString();
}
public static T Create(string FromJson)
{
return JsonUtility.FromJson<T>(FromJson);
}
}

그런 다음 특정 WAPPI 스키마의 C# 래퍼를 제공하도록 이 클래스를 확장할 수 있습니다. 예를 들어 다음 클래스를 사용하여 호출에 대한 인수와 옵션 JSON 문자열 ak.wwise.core.object.get 을 생성할 수 있습니다 (더 많은 정보는 ak.wwise.core.object.get을 참고하세요).

[System.Serializable]
public class ObjectGetArgs : WaapiJsonClassBase<ObjectGetArgs>
{
[System.Serializable]
public class From
{
public string[] id;
}
public From from = new From();
}
[System.Serializable]
public class CallOptions : WaapiJsonClassBase<CallOptions>
{
public string[] @return;
}

다음 클래스를 사용해서 결과를 파싱할 수 있습니다.

[System.Serializable]
public class CallReturn : WaapiJsonClassBase<CallReturn>
{
[System.Serializable]
public class ReturnContents
{
public string name;
public string type;
public string path;
}
public ReturnContents[] @return;
}

다음 코드는 몇몇 유사한 클래스와 함께 이러한 예시를 사용하여 WAAPI에 연결하고 Wwise에서 오브젝트가 생성될 때 호출을 등록하는 간단한 스크립트를 만드는 법을 보여줍니다. 이 코드를 Wwise가 통합된 기존의 Unity 프로젝트에 추가할 경우 WAAPI 연결을 시험할 수 있는 메뉴 옵션이 생깁니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class WaapiJsonClassBase<T>
{
public override string ToString()
{
return JsonUtility.ToJson(this);
}
public static implicit operator string(WaapiJsonClassBase<T> obj)
{
return obj.ToString();
}
public static T Create(string FromJson)
{
return JsonUtility.FromJson<T>(FromJson);
}
}
[System.Serializable]
public class ProjectInfo : WaapiJsonClassBase<ProjectInfo>
{
[System.Serializable]
public class ProjectInfoDirectories
{
public string authoring;
public string bin;
public string help;
public string install;
public string log;
public string user;
}
[System.Serializable]
public class VersionInfo
{
public int build;
public string displayName;
public int major;
public int minor;
public string nickname;
public int schema;
public int year;
}
public int apiVersion;
public string branch;
public string configuration;
public string copyright;
public ProjectInfoDirectories directories;
public string displayName;
public bool isCommandLine;
public string platform;
public int processId;
public string processPath;
public VersionInfo version;
}
[System.Serializable]
public class ObjectCreatedJsonObject : WaapiJsonClassBase<ObjectCreatedJsonObject>
{
[System.Serializable]
public class subObject
{
public string id;
}
public subObject @object;
}
[System.Serializable]
public class ObjectGetArgs : WaapiJsonClassBase<ObjectGetArgs>
{
[System.Serializable]
public class From
{
public string[] id;
}
public From from = new From();
}
[System.Serializable]
public class CallOptions : WaapiJsonClassBase<CallOptions>
{
public string[] @return;
}
[System.Serializable]
public class CallReturn : WaapiJsonClassBase<CallReturn>
{
[System.Serializable]
public class ReturnContents
{
public string name;
public string type;
public string path;
}
public ReturnContents[] @return;
}
[System.Serializable]
public class WaapiTest : MonoBehaviour
{
public static void OnObjectCreated(ulong subID, string Json)
{
ObjectCreatedJsonObject CreatedObject = ObjectCreatedJsonObject.Create(Json);
if(CreatedObject != null)
{
string Result;
var Args = new ObjectGetArgs { from = new ObjectGetArgs.From { id = new[] { CreatedObject.@object.id } } };
var Options = new CallOptions { @return = new[]{ "name", "type", "path" } };
AkWaapiClient.Call("ak.wwise.core.object.get", Args, Options, out Result);
var ReturnedObject = CallReturn.Create(Result);
Debug.Log("New object of type " + ReturnedObject.@return[0].type + " named " + ReturnedObject.@return[0].name + " with ID " + CreatedObject.@object.id + " created at path " + ReturnedObject.@return[0].path);
}
}
[MenuItem("WWISE/TEST WAAPI")]
public static void WaapiClientTest()
{
if (AkWaapiClient.Connect("127.0.0.1", 8080))
{
Debug.Log("Connect Success!");
string WaapiResult = string.Empty;
bool res = AkWaapiClient.Call("ak.wwise.core.getInfo", "{}", "{}", out WaapiResult);
if (res)
{
var projectInfo = ProjectInfo.Create(WaapiResult);
Debug.Log(projectInfo);
}
else
{
Debug.Log("Call failed :(");
}
var Options = new CallOptions { @return = new[] { "id" } };
ulong subId = 0;
res = AkWaapiClient.Subscribe("ak.wwise.core.object.created", Options, OnObjectCreated, out subId, out WaapiResult);
if (res)
{
Debug.Log("Subscribe success! " + WaapiResult);
}
else
{
Debug.Log("Subscribe failed :(");
}
}
else
{
Debug.Log("Connect fail :(");
}
}
}
static bool Call(string Uri, string Args, string Options, out string Result)
Perform a call to the Wwise Authoring. See Querying the Wwise Project for more information.
Definition: AkWaapiClient.cs:184
static bool Subscribe(string Uri, string Options, WaapiEventCallback Callback, out ulong SubscriptionID, out string Result)
Subscribes to a topic. See Subscribing to Topics in the Wwise Authoring API for more information.
Definition: AkWaapiClient.cs:75
The full Wwise Authoring API is exposed to Unity as a native plugin for the Windows and macOS platfor...
Definition: AkWaapiClient.cs:6
static bool Connect(string Uri, uint Port)
Connects to a Wwise Authoring application
Definition: AkWaapiClient.cs:14

이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요