Unity integration
Drop the Jaina C# SDK into Unity. Fetch schemas, populate game objects.
Install
dotnet add package Jaina.Client
Or drop the DLL into Assets/Plugins/.
Generate models
jaina codegen my-game --lang csharp --output ./Assets/Scripts/Models/
You'll get one .cs file per schema.
A minimal MonoBehaviour
using System.Threading.Tasks;
using UnityEngine;
using Jaina.Client;
public class JainaManager : MonoBehaviour
{
[SerializeField] private string projectSlug = "my-game";
private JainaClient client;
async void Start()
{
client = new JainaClient(apiKey: System.Environment.GetEnvironmentVariable("JAINA_API_KEY"));
var enemies = await client.Records.ListAsync<Enemy>(projectSlug, "enemy");
foreach (var e in enemies.Items)
{
SpawnEnemy(e);
}
}
void OnDestroy()
{
client?.Dispose();
}
private void SpawnEnemy(Record<Enemy> r)
{
var go = new GameObject(r.Data.Name);
var enemy = go.AddComponent<EnemyBehaviour>();
enemy.Configure(r.Data);
}
}
Loading sprites
using UnityEngine.Networking;
private async Task<Texture2D> LoadSpriteAsync(string url)
{
using var req = UnityWebRequestTexture.GetTexture(url);
var op = req.SendWebRequest();
while (!op.isDone) await Task.Yield();
if (req.result != UnityWebRequest.Result.Success) return null;
return DownloadHandlerTexture.GetContent(req);
}
Build-time export (offline games)
jaina export my-game --format json --output ./Assets/StreamingAssets/
Read in Unity:
var path = System.IO.Path.Combine(Application.streamingAssetsPath, "my-game/level-1/model.json");
var json = System.IO.File.ReadAllText(path);
var package = Jaina.Client.Package.FromJson(json);
Update strategies
- Periodic refresh — fetch on game start, cache in
PlayerPrefs. Updates apply on next launch. - Webhook + push notification — backend listens for Jaina webhooks and pushes a "new content" notification to the game client.
Caveats
JainaClientisIDisposable. Dispose inOnDestroy.- WebGL builds: CORS applies — configure your Jaina API origin allowlist.
- The SDK targets
netstandard2.0so it works in Unity 2020+ without IL2CPP issues.
