Guten Tag, liebe Kollegen. Das soziale Netzwerk verfügt über eine API und ist einfach in die Einheit über JavaScript integriert. Es ist möglich, Benutzerdaten in Variablen zu speichern, die im sozialen Netzwerk gespeichert werden. > Das Einheitsprogramm verwendet den folgenden Code, um gespeicherte Daten zu erhalten: < /p>
public class PlayerPrefsMapProgressManager : IMapProgressManager
{
// some code
public int LoadLevelStarsCount(int level)
{
return PlayerPrefs.GetInt(GetLevelKey(level), 0);
}
}
< /code>
Ich möchte die Funktion von PlayerPrefs < /code> selbst ersetzen. Die Netzwerk -API ruft die Rückruffunktion mit dem zurückgegebenen Wert auf. < /p>
bridge.JSStorageGet("scope", ResultStorageGet);
public void ResultStorageGet(string value)
{
Debug.Log("Got value: " + value);
}
< /code>
Wenn ich versuche, im Quellcode zu ersetzen, hat die Rückruffunktion keine Zeit, um den Wert zurückzugeben: < /p>
public class PlayerPrefsMapProgressManager : IMapProgressManager
{
// some code
string Data;
public JSBridgeController bridge;
public void ResultStorageGet(string value)
{
Data = value;
}
public int LoadLevelStarsCount(int level)
{
bridge.JSStorageSet("scope", "100");
// I thing should be delay here, ResultStorageGet finished later
return Data; // return empty value
}
}
< /code>
Wie kann ich eine Verzögerung vornehmen, um auf die Aufruffunktion zu warten, oder wie kann ich es anders machen? Ideen, Beispiele, Links. Ich habe alles ausprobiert, was ich kann.
// Test.cs file ****************************************
public class Test : MonoBehaviour
{
public JSBridgeController bridge;
public void ClickStoradgeGet() // click some button
{
bridge.JSStorageGet("scope", ResultStorageGet);
}
public void ResultStorageGet(string value)
{
Debug.Log("Got value: " + value);
}
public void ClickStoradgeSet() // click some button
{
bridge.JSStorageSet("scope", "100");
}
}
//JSBridgeController.cs file ***************************************************
public class JSBridgeController : MonoBehaviour
{
[DllImport("__Internal")]
public static extern void _JSStorageSet(string key, string value);
[DllImport("__Internal")]
public static extern string _JSStorageGet(string key);
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void JSStorageSet(string key, string value)
{
#if !UNITY_EDITOR
_JSStorageSet(key, value);
#endif
}
public void JSStorageGet(string key, UnityAction action)
{
#if !UNITY_EDITOR
// TODO : Вместо стринга сделать отдельную структуру, в которой будет отслеживаться ошибка
_actionStorageGet = action;
_JSStorageGet(key);
#endif
}
public UnityAction _actionStorageGet;
}
// JSBridgeHandler.cs file ********************************************
public class JSBridgeHandler : MonoBehaviour
{
private JSBridgeController controller;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
controller = this.GetComponent();
}
// Update is called once per frame
void Update()
{
}
public void ResultStorageGet(string result)
{
controller._actionStorageGet.Invoke(result);
}
}
// jsbridge.jslib file ******************************************************
mergeInto(LibraryManager.library, {
_JSStorageSet: function (str, value) {
// Deal with api
console.log(UTF8ToString(value));
},
_JSStorageGet: function (str) {
// Deal with api and callback
ss.SendMessage('JSBridge', 'ResultStorageGet', "5");
}
});
Guten Tag, liebe Kollegen. Das soziale Netzwerk verfügt über eine API und ist einfach in die Einheit über JavaScript integriert. Es ist möglich, Benutzerdaten in Variablen zu speichern, die im sozialen Netzwerk gespeichert werden. > Das Einheitsprogramm verwendet den folgenden Code, um gespeicherte Daten zu erhalten: < /p> [code] public class PlayerPrefsMapProgressManager : IMapProgressManager {
// some code
public int LoadLevelStarsCount(int level) { return PlayerPrefs.GetInt(GetLevelKey(level), 0); } } < /code> Ich möchte die Funktion von PlayerPrefs < /code> selbst ersetzen. Die Netzwerk -API ruft die Rückruffunktion mit dem zurückgegebenen Wert auf. < /p>
bridge.JSStorageGet("scope", ResultStorageGet);
public void ResultStorageGet(string value) { Debug.Log("Got value: " + value);
} < /code> Wenn ich versuche, im Quellcode zu ersetzen, hat die Rückruffunktion keine Zeit, um den Wert zurückzugeben: < /p> public class PlayerPrefsMapProgressManager : IMapProgressManager {
// some code string Data; public JSBridgeController bridge; public void ResultStorageGet(string value) { Data = value;
}
public int LoadLevelStarsCount(int level) { bridge.JSStorageSet("scope", "100"); // I thing should be delay here, ResultStorageGet finished later return Data; // return empty value } } < /code> Wie kann ich eine Verzögerung vornehmen, um auf die Aufruffunktion zu warten, oder wie kann ich es anders machen? Ideen, Beispiele, Links. Ich habe alles ausprobiert, was ich kann. // Test.cs file ****************************************
public class Test : MonoBehaviour { public JSBridgeController bridge;
public void ClickStoradgeGet() // click some button { bridge.JSStorageGet("scope", ResultStorageGet); } public void ResultStorageGet(string value) { Debug.Log("Got value: " + value);
} public void ClickStoradgeSet() // click some button { bridge.JSStorageSet("scope", "100"); }
public class JSBridgeController : MonoBehaviour { [DllImport("__Internal")] public static extern void _JSStorageSet(string key, string value); [DllImport("__Internal")] public static extern string _JSStorageGet(string key); // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() {
}
// Update is called once per frame void Update() {
public void JSStorageGet(string key, UnityAction action) { #if !UNITY_EDITOR // TODO : Вместо стринга сделать отдельную структуру, в которой будет отслеживаться ошибка _actionStorageGet = action; _JSStorageGet(key);
#endif
} public UnityAction _actionStorageGet;
}
// JSBridgeHandler.cs file ******************************************** public class JSBridgeHandler : MonoBehaviour { private JSBridgeController controller; // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { controller = this.GetComponent(); }
// Update is called once per frame void Update() {
}
public void ResultStorageGet(string result) { controller._actionStorageGet.Invoke(result); } }
mergeInto(LibraryManager.library, { _JSStorageSet: function (str, value) { // Deal with api console.log(UTF8ToString(value)); }, _JSStorageGet: function (str) { // Deal with api and callback ss.SendMessage('JSBridge', 'ResultStorageGet', "5"); }
Guten Tag, liebe Kollegen. Das soziale Netzwerk verfügt über eine API und ist einfach in die Einheit über JavaScript integriert. Es ist möglich, Benutzerdaten in Variablen zu speichern, die im...
Ich benutze Google OAuth, um meine Benutzer zu authentifizieren. Es verwendet remoteAuthenticationHandler , die den HandleremoteAuthenticateasync definiert, der bei Callback -Endpunkt aufgerufen...
Ich verwende den Callback -Validator in Symfony 2.0.4, um eine Sammlung eingebetteter Formulare zu validieren. Ich versuche zu sehen, ob eine der Felder der Formulare in einem der Formulare...
Zum Beispiel habe ich ein Modul in TypeScript wie:
export function getIndexedDb() : IDBFactory | null
{
if (window.indexedDB)
return window.indexedDB;
else
return null;
}
Ich verwende das Nelmio-API-Bundle mit Symfony 5 zur Dokumentation. Beim Versuch, auf eine Entität innerhalb einer Antwort in meinem Controller zu verweisen, ist ein Fehler aufgetreten. Das Schema...