Lingara Lingara بەڵگەنامەکان ڕێنماییەکان API کتێبخانەکان ئەپەکان دروستکردن جێگیرکردن ئەپی وێب
زمان: سۆرانی

Unity

ئەم پەڕەیە لە ئینگلیزییەوە وەرگێڕدراوە. ئەگەر هەردووکیان جیاواز بوون، پەڕە ئینگلیزییەکە ڕاستە. پەڕە ئینگلیزییەکە بخوێنەوە

Lingara.Embed پاکێجێکی NuGet ـە لەسەر ناوکی یاریزانی Lingara. کتێبخانەی ڕەسەن بۆ هەر یەکێک لەو پێنج پلاتفۆرمە هەڵدەگرێت کە کیتەکانی یاریزان پشتگیرییان دەکەن: Windows، macOS، Linux، Android و iOS.

پاکێجەکە دابمەزرێنە

Unity خۆی پاکێجەکانی NuGet ناخوێنێتەوە، بۆیە سەرەتا NuGetForUnity دابمەزرێنە. پاشان Lingara.Embed بۆ Assets/packages.config زیاد بکە، وەک خوارەوە. NuGetForUnity پاکێجەکە دەگەڕێنێتەوە و کتێبخانەی ڕەسەنی هەر پلاتفۆرمێک لەو شوێنە دادەنێت کە Unity چاوەڕێی دەکات.

پێکهاتەی نموونەی خوارەوە، LingaraEmbedBehaviour، بەشێک نییە لە پاکێجەکە: سەرچاوەکەی بخەرە ناو پرۆژەکەتەوە، بیخەرە سەر GameObject ێک، و گوێ لە ڕووداوەکانی C# ـی بگرە. کلاینتەکە دروست دەکات کاتێک بەئاگا دێت و لەناوی دەبات کاتێک خۆی لەناو دەبرێت، کاتێک یارییەکە دادەخرێت، و پێش ئەوەی دەستکاریکەرەکە سکریپتەکانت دووبارە بار بکاتەوە.

تۆکن لە سێرڤەرەکەی خۆت وەربگرە

پاکێجەکە هەرگیز نهێنییەک هەڵناگرێت. کاتێک کلاینتەکە پێویستی بە تۆکنێک بێت، بە ڕووداوێکی TokenNeeded ئەوە دەڵێت. پێکهاتەکە بە coroutine ێک وەڵامی دەداتەوە کە داواکارییەک بۆ ڕێڕەوی تۆکنی سێرڤەرەکەی خۆت دەنێرێت، کە بە کیتی سێرڤەر تۆکنەکە دروست دەکات و بە تۆکنەکە و کاتی بەسەرچوونی وەڵام دەداتەوە. ئەگەر سێرڤەرەکەت نەتوانێت وەڵام بداتەوە، بانگی TokenUnavailable بکە بۆ ئەوەی ئەو بانگکردنانەی چاوەڕێی تۆکنن دەستبەجێ شکست بهێنن لە جیاتی ئەوەی کاتیان بەسەر بچێت.

ڕووداوەکان لە Update دا بەتاڵ بکە

ناوکەکە I/O ـی تۆڕەکەی لەسەر thread ـی خۆی کار پێدەکات. لە Update دا، پێکهاتەکە ئەوەی لە چوارچێوەی پێشووەوە گەیشتووە بەتاڵ دەکات، لە هەر چوارچێوەیەکدا بەلایەنی زۆرەوە 256 ڕووداو، و هەر یەکێکیان دابەش دەکات: داواکارییەکی تۆکن، وەڵامێکی پارچەپارچەی NPC (بڕوانە گفتوگۆی NPC)، نوێکارییەکی ڕاهێنان (بڕوانە ئەنجامەکانی ڕاهێنان)، ڕووداوێک دەربارەی یاریزانەکە، یان شکستێک.

Unity

<?xml version="1.0" encoding="utf-8"?>
<!-- Assets/packages.config, after installing NuGetForUnity: it restores Lingara.Embed and places each platform's native library. -->
<packages>
  <package id="Lingara.Embed" version="0.1.0-alpha.6" manuallyInstalled="true" />
</packages>

Unity

[Serializable]
private struct Handoff { public string token; public string expires_at; }

// Your own server mints the token: never put a client secret in a game.
private IEnumerator FetchToken()
{
    using (var request = UnityWebRequest.PostWwwForm(tokenUrl, string.Empty))
    {
        yield return request.SendWebRequest();
        if (Client == null) yield break;
        if (request.result != UnityWebRequest.Result.Success)
        {
            Client.TokenUnavailable(request.error); // fail the waiting calls now
            yield break;
        }
        var handoff = JsonUtility.FromJson<Handoff>(request.downloadHandler.text);
        Client.ProvideToken(handoff.token, handoff.expires_at);
    }
}

Unity

private void Update()
{
    if (Client == null) return;
    events.Clear();
    Client.Drain(events); // at most 256 a frame; the rest wait for the next
    foreach (var e in events)
    {
        switch (e)
        {
            case EmbedEvent.TokenNeeded _: StartCoroutine(FetchToken()); break;
            case EmbedEvent.NpcTurn turn: NpcTurn?.Invoke(turn); break;
            case EmbedEvent.Practice practice: Practice?.Invoke(practice); break;
            case EmbedEvent.LingaraReceived received: LingaraReceived?.Invoke(received); break;
            case EmbedEvent.Failed failed: Failed?.Invoke(failed); break;
            case EmbedEvent.Log log: Debug.Log($"[lingara] {log.Level} {log.Target}: {log.Message}"); break;
        }
    }
}