Astuce : Execute In Main Thread Le sujet est résolu

Cette section est destinée aux scripts partagés par la communauté. Chaque post est destiné à un script. Suivez bien les recommandations.

Modérateurs : Administrateurs Suppléants, Community Manager

Avatar de l’utilisateur
ZeroKcm
Messages : 152
Inscription : 09 Juil 2013 21:16

Astuce : Execute In Main Thread

Message par ZeroKcm » 13 Août 2019 19:17

Hello,

J'ai besoin comme souvent d'utiliser un PlayerPrefs suite à un call réseau...
Et bien sur, ça ne marche pas comme on n'est pas sur le main thread. J'ai regardé sur le net mais les solutions ne me plaisent pas trop alors, j'ai fait la mienne :

Je vous la partage, ça pourrait vous être utile :


Appel réseau... puis

Code : Tout sélectionner

void MethodAfterNetworkCall()
{
	int coucou = 32;
	Game.ExecuteInMainThread(() =>
	{
		// Execute ce code sur le mainThread
		PlayerPrefs.SetInt("coucou", coucou); 
	});
	...
}
Voici le code de Game.cs :

Code : Tout sélectionner

using System.Collections.Generic;
public delegate void DelegateVoid();

public class Game
{
	static Queue<DelegateVoid> actions = new Queue<DelegateVoid>();

	public static void ExecuteInMainThread(DelegateVoid action)
	{
		actions.Enqueue(action);
	}

	private void Update()
	{
		if (actions.Count > 0)
		{
			actions.Dequeue().Invoke();
		}
	}
}

Répondre

Revenir vers « Scripts »