Android代码:

public class MainActivity extends UnityPlayerActivity {    private static final String TAG = MainActivity.class.getSimpleName();    private static final int PHOTO_REQUEST_CODE = 1;    private static final boolean DEBUG = false;    private String gameobjectName = "Main Camera";     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    public void OpenGallery()    {       Intent intent = new Intent(Intent.ACTION_PICK,null);       intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");       startActivityForResult(intent, PHOTO_REQUEST_CODE);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {    // TODO Auto-generated method stub       super.onActivityResult(requestCode, resultCode, data);       if(PHOTO_REQUEST_CODE == requestCode){           Uri uri = data.getData();           String imagePath = getImagePath(uri);           if(DEBUG){               Log.d(TAG, imagePath);           }           UnityPlayer.UnitySendMessage(gameobjectName, "GetImagePath", imagePath);       }    }    //获取到图片的地址    private String getImagePath(Uri uri)    {        if(null == uri) return null;        String path = null;        final String scheme = uri.getScheme();        if (null == scheme) {            path = uri.getPath();        } else if (ContentResolver.SCHEME_FILE.equals(scheme)) {            path = uri.getPath();        } else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {            String[] proj = { MediaStore.Images.Media.DATA };            Cursor cursor = getContentResolver().query(uri, proj, null, null,                    null);            int nPhotoColumn = cursor                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);            if (null != cursor) {                cursor.moveToFirst();                path = cursor.getString(nPhotoColumn);            }            cursor.close();        }        return path;    }}AndroidManifest.xml中添加权限:"android.permission.WRITE_EXTERNAL_STORAGE"/>

Unity代码:

public class PhotoTest : MonoBehaviour {    public Button mOpenPhoto;    public Image mImage;    public Text mLog;    private void Start()    {        mOpenPhoto.onClick.AddListener(OpenPhoto);    }    //接通Android    private void OpenPhoto()    {        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");        AndroidJavaObject jo = jc.GetStatic("currentActivity");        jo.Call("OpenGallery");           }    //获取到图片的地址    public void GetImagePath(string imagePath)    {         if (imagePath == null)            return;        mLog.text = imagePath;        StartCoroutine("LoadImage",imagePath);    }    //加载纹理    private IEnumerator LoadImage(string imagePath)    {        WWW www = new WWW ("file://"+imagePath);        mLog.text = mLog.text + "\n www开始加载";        yield return www;        mLog.text = mLog.text + "\n www加载完成";        if (www.error == null)             StartCoroutine ("UpdataImage", www.texture);            else            mLog.text = mLog.text + "\n"+www.error;     }    //纹理转化为精灵    private IEnumerator UpdataImage(Texture2D texture)    {        mLog.text = mLog.text + "\n 开始转化为精灵";        Sprite sprite = Sprite.Create(texture, new Rect(0,0, texture.width, texture.height), new Vector2(0.5f, 0.5f));        mImage.sprite = sprite;        mLog.text = mLog.text + "\n 转换结束";        yield return new WaitForSeconds(0.01f);        Resources.UnloadUnusedAssets();    }}

下载地址:http://download.csdn.net/detail/piratecode/9661589

更多相关文章

  1. 获取手机联系人
  2. Android(安卓)获取音频焦点工具类
  3. Android学习笔记之Gallery(2)
  4. 使用webview打开浏览器
  5. 访问网络的Json和图片
  6. android 获取屏幕宽高 & 控件宽高
  7. android XMl Selector 图片背景点击和焦点获取样式
  8. 获取当前locale
  9. Android之获取IP

随机推荐

  1. css-移动端布局-pxtorem与淘宝移动端实战
  2. 仿移动端商品部分
  3. iOS13适配的实现方法
  4. 常用函数类型,常用数据类型
  5. iOS模拟中奖名单循环滚动效果
  6. OpenCV实现人脸检测功能
  7. iOS实现文本分页的方法示例
  8. openCV显著性检测的使用
  9. python画双y轴图像的示例代码
  10. iOs迁至WKWebView跨过的一些坑