private Spawner getSpawnerForItem(ScreenPlayItem screenPlayItem) { Spawner spawner = null; switch (screenPlayItem.type) { case ItemType.audio: Debug.Log("New audio spawner: " + screenPlayItem); spawner = new AudioSpawner() .setAudioSource(getNextAudioSource()) .setMediaObject(Resources.Load(screenPlayItem.url) as AudioClip); break; case ItemType.image: Debug.Log("New image spawner: " + screenPlayItem); spawner = new ImageSpawner() .setContainer(_imageContainer) .setImageSource(getNextImageSource()) .setMediaObject(Resources.Load(screenPlayItem.url) as Texture); break; default: Debug.Log("Unknown item: " + screenPlayItem); break; } return(spawner); }
// Use this for initialization void Start() { if (Application.isEditor) { _FilePath = Application.dataPath + "/Resources/Images/"; //persistentDataPath } else { _FilePath = Application.dataPath + "/Resources/Images/"; } //create directory if not exists if (!System.IO.Directory.Exists(_FilePath)) { System.IO.Directory.CreateDirectory(_FilePath); } //get all images from directory List <Sprite> spriteList = new List <Sprite>(); List <string> files = new List <string> (); var info = new DirectoryInfo(_FilePath); var fileInfo = info.GetFiles(); foreach (var file in fileInfo) { if (file.Extension == ".jpg" || file.Extension == ".png") { files.Add(file.FullName); //load image into texture and then into sprite var bytes = System.IO.File.ReadAllBytes(file.FullName); Texture2D image = new Texture2D(1, 1); image.LoadImage(bytes); spriteList.Add(Sprite.Create(image, new Rect(0, 0, image.width, image.height), Vector2.zero)); } } if (files.Count == 0) { _NoImageText.text = "Place reference images in: \n\n" + _FilePath; } foreach (Sprite tex in spriteList) { GameObject img = Instantiate(_ImagePrefab as Object, Vector3.zero, Quaternion.identity) as GameObject; img.transform.SetParent(_Parent, false); Image sprite = img.GetComponent <Image> (); sprite.sprite = tex; ImageSpawner imgSpawner = img.GetComponent <ImageSpawner>(); imgSpawner._GlobalWrapper = _GlobalWrapper; } RectTransform R = _Parent.GetComponent <RectTransform> (); R.sizeDelta = new Vector2(R.sizeDelta.x, (40f + 5f) * ((Mathf.CeilToInt((spriteList.Count) / 3) + 1))); }
/*Load images in a coroutine - not working now*/ IEnumerator LoadButtons(List <string> files) { foreach (var file in files) { byte[] bytes; yield return(bytes = System.IO.File.ReadAllBytes(file)); Texture2D image = new Texture2D(1, 1); yield return(image.LoadImage(bytes)); Sprite sprite = new Sprite(); yield return(sprite = Sprite.Create(image, new Rect(0, 0, image.width, image.height), Vector2.zero)); GameObject img = Instantiate(_ImagePrefab as Object, Vector3.zero, Quaternion.identity) as GameObject; img.transform.SetParent(_Parent, false); img.layer = LayerMask.NameToLayer("Ignore Raycast"); Image spr = img.GetComponent <Image>(); spr.sprite = sprite; ImageSpawner imgSpawner = img.GetComponent <ImageSpawner>(); imgSpawner._GlobalWrapper = _GlobalWrapper; } }