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.
Avatar de l’utilisateur
ZeroKcm
Messages : 175
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();
		}
	}
}

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Astuce : Execute In Main Thread

Message par E3DStef » 26 Août 2019 11:02

Bonne approche :-) merci du partage ^^
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Répondre

Revenir vers « Scripts »