将图像从Android活动传递到unity3d

时间:2014-03-08 14:45:40

标签: android android-intent unity3d

是否可以从传递图像的android活动中启动统一,然后将该图像用作精灵?例如使用类似的东西:

Intent i = new Intent(this, UnityActivity.class);
i.putExtra(imageFile);
startActivity(i);

如果这是可能的,你如何统一处理收到的图像?

由于

1 个答案:

答案 0 :(得分:0)

我通过将图像保存到Android活动中的特定位置解决了我自己的问题:

private static boolean storeImage(Bitmap imageData, String filename) {
        //get path to external storage (SD card)
        String iconsStoragePath = Environment.getExternalStorageDirectory() + "/gameFiles/myImages/";
        File sdIconStorageDir = new File(iconsStoragePath);

        //create storage directories, if they don't exist
        sdIconStorageDir.mkdirs();

        try {
            String filePath = sdIconStorageDir.toString() + "/" + filename;
            FileOutputStream fileOutputStream = new FileOutputStream(filePath);

            BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);


            imageData.compress(CompressFormat.PNG, 100, bos);

            bos.flush();
            bos.close();

        } catch (FileNotFoundException e) {
            Log.w("TAG", "Error saving image file: " + e.getMessage());
            return false;
        } catch (IOException e) {
            Log.w("TAG", "Error saving image file: " + e.getMessage());
            return false;
        }

        return true;
    }

然后我使用这个图像通过引用我在android活动中保存文件的位置来统一创建一个精灵:

IEnumerator Start()
   {
       string path = "file:///mnt//sdcard//gameFiles//myImages//img.png";
       WWW www = new WWW(path);
       yield return www;

       SpriteRenderer renderer = gameObject.GetComponent<SpriteRenderer>();
       Sprite sprite = new Sprite();
       sprite = Sprite.Create(www.texture, new Rect(-0.7f, -0.7f, 330, 440), new Vector2(0.5f, 0.5f), 150.0f);

       renderer.sprite = sprite;
       Time.timeScale = 0;
   }