Oyun/Uygulama Entegrasyonları
Uygulamanıza veya oyununuza SignalRGB desteği eklemek hızlı ve kolaydır. Projeniz HTTP POST istekleri gönderebiliyorsa SignalRGB’nin geniş uyumlu cihaz yelpazesinden yararlanabilir.
Uygulamanızın veya oyununuzun SignalRGB ile entegre olabileceği iki temel yol vardır: önceden mevcut efektleri tetiklemek veya geliştirdiğiniz özel bir efektle iletişim kurmak. İlk seçenek çok daha az geliştirme süresi gerektirir ancak hazır efekt kitaplığımızla sınırlıdır. İkinci yaklaşım daha fazla zaman alabilir, ancak oluşturabileceğiniz efektlerin türleri ve sayısı açısından sonsuz olasılıklar sunar.
Sonuçta, projeniz için en iyi yaklaşımın hangisi olduğuna geliştirici olarak siz karar vereceksiniz. Ancak her iki yöntem de harika aydınlatma deneyimleri sunabilir.
Oyun Efekti Kitaplığı
Section titled “Oyun Efekti Kitaplığı”Kendi aydınlatma efektlerinizi geliştirmeyi tercih etmiyorsanız, kapsamlı hazır efekt kitaplığımızdan yararlanabilirsiniz. SignalRGB uygulama URL’lerini kullanarak SignalRGB’den indirilebilen herhangi bir herkese açık aydınlatma efektini kolayca yükleyebilir ve etkinleştirebilirsiniz.
Tüm efektlerin hızlı tetiklenmesini sağlamak için uygulamanızın veya oyununuzun ilk başlatıldığında etkinleştireceği aydınlatma efektlerini yüklemeniz önerilir.
Bu konuda yardımcı olmak için aşağıdaki API yolları mevcuttur:
| İstek URI | Amaç |
|---|---|
| signalrgb://effect/install/EffectName | EffectName adlı aydınlatma efektini yükler |
| signalrgb://effect/apply/EffectName | EffectName adlı aydınlatma efektini etkinleştirir |
Seçtiğiniz motor veya dil, özel URL protokol işleyicileriyle iletişim kuramıyorsa SignalRGB API’sinin bu bölümünü yine de kullanabilirsiniz. C:\Users\<username>\AppData\Local\VortxEngine konumundaki SignalRgbLauncher.exe yürütülebilir dosyasını, kullanmak istediğiniz API yolunun yolu olarak ayarlanmış --url argümanıyla başlatmanız yeterlidir. Uygulamanın ön plana getirilmesini önlemek için ?-silentlaunch- ekleyebilirsiniz.
Örneğin, Azure adlı efekti yüklemek için yürütülebilir dosyayı şu argümanla başlatırsınız:
SignalRgbLauncher.exe --url=effect/apply/Azure?-silentlaunch-
Unity
Unreal Engine
Section titled “Unreal Engine”Aşağıdaki C++ sınıfı, herhangi bir SignalRGB efektini yüklemek ve etkinleştirmek için Unreal Engine ile kullanılabilir.
#include "SignalEffectApi.h"
void SignalEffectApi::ApplyEffect(const std::string& effect) { const TCHAR* appdataPath = FPlatformProcess::UserSettingsDir(); const FString exePath = FString(appdataPath) + TEXT("\\VortxEngine\\SignalRgbLauncher.exe"); const FString params = TEXT("--url=effect/apply/") + FString(effect.c_str()) + TEXT("?-silentlaunch-"); FPlatformProcess::CreateProc(*exePath, *params, true, false, false, nullptr, 0, nullptr, nullptr);}
void SignalEffectApi::InstallEffect(const std::string& effect) { const TCHAR* appdataPath = FPlatformProcess::UserSettingsDir(); const FString exePath = FString(appdataPath) + TEXT("\\VortxEngine\\SignalRgbLauncher.exe"); const FString params = TEXT("--url=effect/install/") + FString(effect.c_str()) + TEXT("?-silentlaunch-"); FPlatformProcess::CreateProc(*exePath, *params, true, false, false, nullptr, 0, nullptr, nullptr);}#pragma once
#include "CoreMinimal.h"
class SignalEffectApi{public: void ApplyEffect(const std::string& effect); void InstallEffect(const std::string& effect);};Uygulamanız başlatıldığında kullanmak istediğiniz efektleri yüklemeniz önerilir; böylece efektler hızla tetiklenebilir.
Aşağıdaki örnek, SignalEffectApi sınıfını kullanarak bir efekti nasıl yükleyip etkinleştireceğinizi göstermektedir.
#include "SignalEffectApi.h"
... // Efekt API'sini başlat. SignalEffectApi srgbEffect;
// Yüklemek istediğiniz efektin adını ayarla. std::string effectName = "Azure";
// Efekti yükle. srgbEffect.InstallEffect(effectName);
// Efekti uygula. srgbEffect.ApplyEffect(effectName);
...Özel Efektler
HTTP isteklerini kullanarak doğrudan SignalRGB ile iletişim kurmak, isteklerin nasıl yapılandırıldığını öğrendikten sonra kolayca gerçekleştirilebilir. İsteğin yapısı şöyledir:
İstek türü: POST
İstek URI: http://localhost:16034/canvas/event?sender=your-app-name&event=your-event
Uygulamanızdan gönderilen tüm komutlar aynı sender değişkenini kullanmalıdır. event değişkeni, SignalRGB’ye iletilecek verilerin gittiği yerdir.
Efektin içinde tüm veriler onCanvasApiEvent fonksiyonu aracılığıyla iletilir. Efektinizin HTTP isteklerine nasıl yanıt vereceğini yönetmek için bu fonksiyonu kullanın.
Örnek Kod
Section titled “Örnek Kod”Bu temel örnek, bir Unity veya Unreal Engine oyununun özel bir aydınlatma efektinde olayları tetiklemek için SignalRGB ile nasıl iletişim kurabileceğini göstermektedir. Ancak özel aydınlatma efektini kontrol etmek için herhangi bir HTTP POST istekleri gönderme yöntemi kullanılabilir. Bu esneklik, neredeyse her oyuna veya uygulamaya SignalRGB desteğinin eklenebileceği anlamına gelir.
Aydınlatma Efekti
Section titled “Aydınlatma Efekti”API yoluna gönderilen tüm olaylar, onCanvasApiEvent fonksiyonu aracılığıyla aydınlatma efektine iletilir. Olayları yönetmenin birçok yolu vardır, ancak aşağıdaki örnek işleri basit ve anlaşılır tutar. Birden fazla olayla daha karmaşık bir şey geliştiriyorsanız, olayları ve bunlara karşılık gelen aydınlatma efektlerini takip etmek için durum işleyicisi yöntemini kullanmayı düşünün.
<head> <title>CustomApiEffect</title> <meta description="Effect description goes here." /> <meta publisher="Your Name Here" /></head>
<body style="margin: 0; padding: 0;"> <canvas id="exCanvas" width="320" height="200"></canvas></body>
<script> var c = document.getElementById("exCanvas"); var ctx = c.getContext("2d"); var width = 320; var height = 200;
var activeEvent = ""; // En son olayı depolamak için değişken
function onCanvasApiEvent(apiEvent) { if (apiEvent["sender"] == "apiTestApp") { // Yalnızca "apiTestApp" göndericili API olaylarına yanıt ver. Bunu lightscript'inizin kullandığı gönderici dizesiyle değiştirmelisiniz. activeEvent = apiEvent["event"]; // activeEvent değişkenini en son API olay verilerine ayarla. } }
function update() { if (activeEvent == "allRed") { // allRed olayına yanıt olarak canvas'ı tamamen kırmızı yap ctx.fillStyle = '#FF0000'; ctx.fillRect(0, 0, width, height); } else { // Aksi takdirde canvas'ı tamamen siyah yap ctx.fillStyle = '#000000'; ctx.fillRect(0, 0, width, height); }
window.requestAnimationFrame(update); }
window.requestAnimationFrame(update);</script>Aşağıdaki gibi bir fonksiyon, Unity’nin SignalRGB ile iletişim kurmasına izin verecektir. Ancak herhangi bir HTTP POST istekleri gönderme yöntemi kullanılabilir.
using UnityEngine;using UnityEngine.Networking;using System.Collections;using System.Collections.Generic;
public class SendAllRedEventBehavior : MonoBehaviour{ void Start() { StartCoroutine(Upload()); }
IEnumerator Upload() { UnityWebRequest www = UnityWebRequest.Post("http://localhost:16034/canvas/event?sender=apiTestApp&event=allRed"); yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) { Debug.Log(www.error); } else { Debug.Log("Sent lighting event to SignalRGB!"); } }}Unreal Engine
Section titled “Unreal Engine”Aşağıdaki C++ sınıfı, SignalRGB API aracılığıyla iletişimi etkinleştirmek için Unreal Engine ile kullanılabilir. İstek URI’sinin sender parametresini lightscript’inizin kullandığıyla eşleşecek şekilde değiştirdiğinizden emin olun.
#include "SignalApi.h"
void SignalApi::SendEvent(const std::string& sender, const std::string& event) { Http = &FHttpModule::Get(); TSharedRef<IHttpRequest> Request = Http->CreateRequest(); std::string requestUri = "http://localhost:16034/canvas/event?sender="+ sender + "&event=" + event; Request->SetURL(requestUri.c_str()); Request->SetVerb("GET"); Request->SetHeader(TEXT("User-Agent"), "X-UnrealEngine-Agent"); Request->SetHeader("Content-Type", TEXT("application/json")); Request->ProcessRequest();}#pragma once
#include "CoreMinimal.h"#include "Runtime/Online/HTTP/Public/Http.h"
class SignalApi{public: FHttpModule* Http; void SendEvent(const std::string& sender,const std::string& event);};Oyununuzun kodunda bir aydınlatma efekti tetiklemek için, tetiklemek istediğiniz olayın adını ve uygulamanızın veya oyununuzun SignalRGB’ye kendini tanıtmak için kullanacağı adı belirterek SendEvent fonksiyonunu çağırmanız yeterlidir.
#include "SignalApi.h"
... // sender değişkenini ayarla. const std::string SAPI_APPNAME = "apiTestGame"; // SignalApi sınıfını başlat. SignalApi sapi; // Olay adını ayarla. std::string eventName = "weaponFired"; // API olayını SignalRGB'ye gönder. sapi.SendEvent(SAPI_APPNAME, eventName);
...using UnrealBuildTool;
public class SignalApiTest : ModuleRules{ public SignalApiTest(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "EnhancedInput", "Http" }); // Http'yi bu diziye EKLEMELİSİNİZ, aksi takdirde derleme başarısız olur! }}