乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Unity調(diào)用Android ? Unity3D頻道

       3dC 2014-05-06

      開發(fā)環(huán)境

      Window7

      Unity3D  3.4

      MB525defy   Android 2.2.1

      jdk1.6.0 (7版本貌似不行)

       

      這次說一個比較有趣的內(nèi)容,Android類在Unity上如何調(diào)用的方法,感謝★幻想の貓⌒的分享,話說方法來自網(wǎng)上,羽化只是小做修改,在此感慨國外牛人多,下面開始吧- -

       

      本次學(xué)習(xí):

      1.      Android類打jar包

      2.      Unity如何調(diào)用Android

      3.      功能分析

       

      1.   Android類打jar包

      羽化在這還是用網(wǎng)上的那個例子,用Android類得到Sensor的三個值,這里把過程簡化,畢竟這些都是Android的基礎(chǔ)。

      首先打開Unity,在Project下創(chuàng)建Plugins文件夾,然后在該文件夾下創(chuàng)建一個名為Android的子文件夾,再在Android文件夾下創(chuàng)建src文件夾,創(chuàng)建這三個層級的文件夾后我們開始寫Android類,下面有些部分是需要自己修改的,羽化用自己的習(xí)慣修改了。

      CompassActivity.java

      1. package com.LB.UnityAndroid1;
      2. import com.unity3d.player.UnityPlayerActivity;
      3. import android.content.Context;
      4. import android.hardware.Sensor;
      5. import android.hardware.SensorEvent;
      6. import android.hardware.SensorEventListener;
      7. import android.hardware.SensorManager;
      8. import android.os.Bundle;
      9. import android.util.Config;
      10. import android.util.Log;
      11. import android.app.Activity;
      12. import android.view.WindowManager;
      13. public class CompassActivity extends UnityPlayerActivity {
      14. private static final String TAG = "Compass";
      15. private SensorManager mSensorManager;
      16. private Sensor mSensor;
      17. static public float xmag;
      18. static public float x;
      19. static public float ymag;
      20. static public float zmag;
      21. private final SensorEventListener mListener = new SensorEventListener() {
      22. public void onSensorChanged(SensorEvent event) {
      23. if (Config.DEBUG) Log.d(TAG,
      24. "sensorChanged (" + event.values[0] + ", " + event.values[1] + ", " + event.values[2] + ")");
      25. xmag = event.values[0];
      26. ymag = event.values[1];
      27. zmag = event.values[2];
      28. }
      29. public void onAccuracyChanged(Sensor sensor, int accuracy) {
      30. }
      31. };
      32. @Override
      33. protected void onCreate(Bundle icicle) {
      34. super.onCreate(icicle);
      35. getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
      36. mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
      37. mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
      38. }
      39. @Override
      40. protected void onResume()
      41. {
      42. if (Config.DEBUG) Log.d(TAG, "onResume");
      43. super.onResume();
      44. mSensorManager.registerListener(mListener, mSensor,
      45. SensorManager.SENSOR_DELAY_GAME);
      46. }
      47. @Override
      48. protected void onStop()
      49. {
      50. if (Config.DEBUG) Log.d(TAG, "onStop");
      51. mSensorManager.unregisterListener(mListener);
      52. super.onStop();
      53. }
      54. public static float getX() {
      55. //return xmag;
      56. x+=10.0;
      57. return x;
      58. }
      59. public static float getY() {
      60. return ymag;
      61. }
      62. public static float getZ() {
      63. return zmag;
      64. }
      65. }

       

       

      好了,這個類放在src文件夾里面,現(xiàn)在是四個層級關(guān)系,右擊UnityAndroid選中Show in Explorer,這樣就會來到這個文件夾下,下面打開cmd命令控制臺,cd到我們這個文件夾下,分別輸入這三條語句:

      1.> javac CompassActivity.java -classpath D:\Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar -bootclasspath D:\android-sdk-windows\platforms\android-8\android.jar -d .

      2.> javap -s com.LB.UnityAndroid1.CompassActivity

      3.> jar cvfM ../Compass.jar com/

      注意這里需要配置好java的環(huán)境變量和要有android 2.2的API。這樣,在Unity里面會發(fā)現(xiàn)多出來一個com的文件夾和Android的jar包,我們打jar包就這樣打好了。

       

       

      2.  Unity如何調(diào)用Android

      這里我們還需要新建AndroidMainfest.xml在Android文件夾下,這里要新建個res文件夾,因為羽化這有用到里面的資源。于是放好后結(jié)構(gòu)就很像Android的項目了。

      AndroidMainfest.xml

      1. <?xml version="1.0" encoding="utf-8"?>
      2. <manifest xmlns:android="http://schemas./apk/res/android"
      3.       package="com.LB.UnityAndroid1"
      4.       android:versionCode="1"
      5.       android:versionName="1.0">
      6.     <application android:icon="@drawable/icon" android:label="@string/app_name">
      7.         <activity android:name=".CompassActivity"
      8.                   android:label="@string/app_name">
      9.             <intent-filter>
      10.                 <action android:name="android.intent.action.MAIN" />
      11.                 <category android:name="android.intent.category.LAUNCHER" />
      12.             </intent-filter>
      13.         </activity>
      14.     </application>
      15.     <uses-permission android:name="android.permission.WAKE_LOCK"/>
      16. </manifest>

       

      萬事具備,現(xiàn)在寫個C#來調(diào)用這個類了,這個就放在根目錄下。

      CompassJNI.cs

      1. using UnityEngine;
      2. using System.Collections;
      3. using System;
      4. public class CompassJNI : MonoBehaviour
      5. {
      6.     static float    xValue;
      7.     static float    yValue;
      8.     static float    zValue;
      9.     // Use this for initialization
      10.     void Start ()
      11.     {
      12.         AndroidJNI.AttachCurrentThread();
      13.     }
      14.     void Update() {
      15.         if(Input.GetKey(KeyCode.Escape))
      16.         {
      17.             Application.Quit();
      18.         }
      19.         using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
      20.         {
      21.             using (AndroidJavaObject obj_Activity = cls_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity")) {
      22.                 AndroidJavaClass cls_CompassActivity = new AndroidJavaClass("com.LB.UnityAndroid1.CompassActivity");
      23.                 cls_CompassActivity.CallStatic("Init", obj_Activity);
      24.                 xValue = cls_CompassActivity.CallStatic<float>("getX");
      25.                 yValue = cls_CompassActivity.CallStatic<float>("getY");
      26.                 zValue = cls_CompassActivity.CallStatic<float>("getZ");
      27.             }
      28.         }
      29.     }
      30.     void OnGUI()
      31.     {
      32.         GUI.Label(new Rect(Screen.width / 2 -200, Screen.height / 2, 400,100), "xmag = " + xValue.ToString() + " ymag = " + yValue.ToString() + " zmag = " + zValue.ToString());
      33.         if(GUI.Button(new Rect(Screen.width-120,Screen.height-40,120,30),"Click to YUHUA!"))
      34.         {
      35.             Application.OpenURL("http://blog.csdn.net/libeifs");
      36.         }
      37.     }
      38. }

       

       

      在運行的時候一定要記住把Player Settings里面的Identification的Bundle Identifier改成自己的項目名,羽化這里是Com.LB.UnityAndroid1 。

       

      3.   功能分析

      這個例子是得到Android手機的Sensor,羽化這里讓X自增長以示區(qū)別,細心的人會發(fā)現(xiàn)羽化這里加了些看似沒用的語句,比如這里有個阻止屏幕休眠的語句,這是羽化目前發(fā)現(xiàn)唯一的一個Unity做不到的功能,多虧了Michael的提醒,不然會成為一個盲點。其實這個項目里面很多東西可以刪掉,留下jar包和CompassJNI就夠了,大家可以試試,Unity載入jar包貌似是全部載入與名字沒有關(guān)系,話說這個例子可以用來添加ADMob,公司里面明哥已經(jīng)實現(xiàn)出來了,羽化是不建議加這個,因為很煩人,原來玩《割繩子》的時候深有體會=。= 這里加了羽化博客的廣告,大家不要罵。。。

      老樣子項目地址送上:

      http://download.csdn.net/detail/libeifs/3616911

       

      原文鏈接:http://blog.csdn.net/libeifs/article/details/6791346

      聲明: 本文由( liuxiaoni )原創(chuàng)編譯,轉(zhuǎn)載請保留鏈接: Unity調(diào)用Android

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多