Dissonity allows you to easily create Discord activities with Unity. In version 1, the npm and Unity packages share data to provide functionality.
It's designed for a structure similar to the nested-messages example from Discord. You may want to familiarize with that project structure first.
npm install dissonity
yarn add dissonity
pnpm add dissonity
When running the activity, your game build will be inside a nested iframe that we will call "child". The child iframe must have the id "dissonity-child", like:
<iframe id="dissonity-child" src=".proxy/nested/index.html"></iframe>
Instead of manually creating an SDK instance, call setupSdk
inside the parent index.js with your options:
import { setupSdk } from "dissonity";
window.addEventListener("DOMContentLoaded", () => {
setupSdk({
clientId: /*your-app-id*/,
scope: ["rpc.voice.read", "guilds.members.read"],
tokenRoute: "/api/token"
});
});
Where tokenRoute
is the route where your server is handling authorization codes and sending back an access token in a POST request:
{ code: string }
{ access_token: string }
app.post("/api/token", async (req, res) => {
const code = req.body.code;
(...)
res.send({ access_token });
});
That's all the configuration you need inside Node.js! Now, in your Unity project install the Dissonity Unity package.
As a note, there's an already configured Node.js project in the GitHub repository.