prob au téléchargement de Material depuis un asset bundle

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

prob au téléchargement de Material depuis un asset bundle

Message par sotec » 08 Juin 2015 12:05

voila, j'ai une centaine de matériaux ( et textures associées ou non ), et je les charges en asynchrone ( je met une texture de base des resources en attendant la fin du téléchargement).

mon problème est que si je récupère bien le matérial voulu, il manque toujours la texture ( qui est pourtant bien affichée en dépendance dans le .manifest ) et le shader standard semble cassé :

Image

je n'ai pas réussit à trouver de solution , si quelqu'un a une idée, j'en serai ravi ^^
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
Freelax
Messages : 1596
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: prob au téléchargement de Material depuis un asset bundl

Message par Freelax » 08 Juin 2015 14:33

Le code de ton builder serais pas du luxe ... :?
Image

sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

Re: prob au téléchargement de Material depuis un asset bundl

Message par sotec » 08 Juin 2015 14:41

pas faux, j'ai simplement repris celui du live training :

Code : Tout sélectionner

using UnityEngine;
using UnityEditor;
using System.Collections;
using System.IO;

public class AssetBundleMenu
{
	[MenuItem("AssetBundles/Clear Cache")]
	static void ClearCache()
	{
		Caching.CleanCache ();
	}
	
	[MenuItem("AssetBundles/Build for PC")]
	static void TogglePCBuild ()
	{
		EditorPrefs.SetBool("buildPC", !EditorPrefs.GetBool("buildPC", false));
	}
	[MenuItem("AssetBundles/Build for PC", true)]
	static bool TogglePCBuildValidate ()
	{
		Menu.SetChecked("AssetBundles/Build for PC", EditorPrefs.GetBool("buildPC", false));
		return true;
	}
	
	[MenuItem("AssetBundles/Build for OSX")]
	static void ToggleOSXBuild ()
	{
		EditorPrefs.SetBool("buildOSX", !EditorPrefs.GetBool("buildOSX", false));
	}
	[MenuItem("AssetBundles/Build for OSX", true)]
	static bool ToggleOSXBuildValidate ()
	{
		Menu.SetChecked("AssetBundles/Build for OSX", EditorPrefs.GetBool("buildOSX", false));
		return true;
	}
	
	[MenuItem("AssetBundles/Build for Web")]
	static void ToggleWebBuild ()
	{
		EditorPrefs.SetBool("buildWeb", !EditorPrefs.GetBool("buildWeb", false));
	}
	[MenuItem("AssetBundles/Build for Web", true)]
	static bool ToggleWebBuildValidate ()
	{
		Menu.SetChecked("AssetBundles/Build for Web", EditorPrefs.GetBool("buildWeb", false));
		return true;
	}
	
	[MenuItem("AssetBundles/Build for iOS")]
	static void ToggleiOSBuild ()
	{
		EditorPrefs.SetBool("buildiOS", !EditorPrefs.GetBool("buildiOS", false));
	}
	[MenuItem("AssetBundles/Build for iOS", true)]
	static bool ToggleiOSBuildValidate ()
	{
		Menu.SetChecked("AssetBundles/Build for iOS", EditorPrefs.GetBool("buildiOS", false));
		return true;
	}
	
	[MenuItem("AssetBundles/Build for Android")]
	static void ToggleAndroidBuild ()
	{
		EditorPrefs.SetBool("buildAndroid", !EditorPrefs.GetBool("buildAndroid", false));
	}
	[MenuItem("AssetBundles/Build for Android", true)]
	static bool ToggleAndroidBuildValidate ()
	{
		Menu.SetChecked("AssetBundles/Build for Android", EditorPrefs.GetBool("buildAndroid", false));
		return true;
	}
	
	[MenuItem("AssetBundles/Build Asset Bundles")]
	static void BuildAssetBundles() 
	{
		// Bring up save panel
		string path = EditorUtility.SaveFolderPanel ("Save Bundle", "", "");
		if (path.Length != 0) 
		{   
			if(EditorPrefs.GetBool("buildPC", false)) 
				BuildBundle(path + "/PC", BuildTarget.StandaloneWindows);
			
			if(EditorPrefs.GetBool("buildOSX", false))
				BuildBundle(path + "/OSX", BuildTarget.StandaloneOSXUniversal);
			
			if(EditorPrefs.GetBool("buildWeb", false))
				BuildBundle(path + "/Web", BuildTarget.WebPlayer);
			
			if(EditorPrefs.GetBool("buildiOS", false))
				BuildBundle(path + "/iOS", BuildTarget.iOS);
			
			if(EditorPrefs.GetBool("buildAndroid", false))
				BuildBundle(path + "/Android", BuildTarget.Android);          
		}
	}
	
	static void BuildBundle(string path, BuildTarget target)
	{
		if (!Directory.Exists (path))
			Directory.CreateDirectory (path);
		
		BuildPipeline.BuildAssetBundles (path, BuildAssetBundleOptions.None, target);
	}
}




Edit : j'ai trouvé le problème des textures j'avais commenté l'appel à la fonction de telechargement des textures >< par contre le rendu bizarre dans l'éditeur du shader standard reste étrange.

Edit 2 : il me semblait que les dépendances étaient incluse dans le bundle pourtant

Edit 3 : bon en fait ça marche en random quand je télécharge les dépendance à la main, et si je ne le fait pas, il manque le mainTexture du material, T_T, je comprends plus rien >< , il faut que je remette à la main la texture dans le material ? ( dans ce cas, l'essetbundle d'un material est quasi inutile ><
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Répondre

Revenir vers « (C#) CSharp »