我想在Unity上使用Unity光傳感器。 Unity無法做到這一點,商店裏沒有資產/插件可以做到這一點。和谷歌是不是這個問題,以便員工共贏...如何在Unity中使用Android光傳感器
1
A
回答
4
簡易型
這部分解釋瞭如何使用我的代碼。
- 把
.jar
文件到文件夾Assets/Plugins/Android
- 然後,只需添加腳本
LightSensorPluginScript.cs
你想要的遊戲對象。 然後,如果你想獲得的傳感器值:
TextMesh tm; LightSensorPluginScript test; void Start() { tm = transform.GetComponent<TextMesh>(); test = GetComponent<LightSensorPluginScript>(); } void Update() { tm.text = test.getLux().ToString(); }
所有文件都可以在這個zip archive
詳細的版本中找到
這部分解釋瞭如何創建該插件。
首先你必須創建一個Android庫。如果您使用的是Android Studio,則會將其轉換爲.aar
文件。解壓縮它們就像一個zip文件,你會發現一個classes.jar
文件,這是你想要的正確的.jar
。你可以隨意重命名它,Unity不關心。
Android的Java代碼
public class LightSensorLib{
private SensorManager mSensorManager;
private Sensor mSensorRot;
private float lux = -1000;
public void init(Context context) {
mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
mSensorRot = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
SensorEventListener mySensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float sensorData[];
if(event.sensor.getType()== Sensor.TYPE_LIGHT) {
sensorData = event.values.clone();
lux = sensorData[0];
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
mSensorManager.registerListener(mySensorEventListener, mSensorRot, 500);
}
public float getLux() {
return lux;
}
}
然後,我有一個C#腳本誰做Android的Java和團結
C#橋碼之間的橋樑
public class LightSensorPluginScript : MonoBehaviour {
private AndroidJavaObject activityContext = null;
private AndroidJavaObject jo = null;
AndroidJavaClass activityClass = null;
void Start() {
#if UNITY_ANDROID
activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
activityContext = activityClass.GetStatic<AndroidJavaObject>("currentActivity");
jo = new AndroidJavaObject("com.etiennefrank.lightsensorlib.LightSensorLib");
jo.Call("init", activityContext);
#endif
}
public float getLux() {
#if UNITY_ANDROID
return jo.Call<float>("getLux");
#endif
}
}
現在,您可以請執行本帖子的Simple version
部分中的解釋傳感器。
如果你想要任何精度,我會很樂意回答和更新帖子。
對於IO版本,我很抱歉,但我沒有MAC來開發這個...所以如果你想借我一個,我會很樂意這樣做。
我可以將它作爲插件添加到資產商店,但感覺有點麻煩。所以我更喜歡將它發佈在StackOverflow上,在這裏,帖子編輯器非常整潔。
最後我希望它能幫助一些開發者。
相關問題
- 1. android:光傳感器nullPointerException
- 2. 如何使android compas傳感器變得光滑
- 3. Android如何使用傳感器?
- 4. Android遊戲如何使用傳感器?
- 5. Android光傳感器返回null
- 6. 的Android光傳感器陣列數據
- 7. Android攝像頭取光傳感器值
- 8. 如何使用指紋傳感器在Android中驗證用戶?
- 9. 如何使用傳感器
- 10. 如何將背光android應用程序監視光線傳感器前景
- 11. Xperia Arc S光傳感器
- 12. 如何在android中使用外部傳感器?
- 13. 在Android上使用React Native傳感器
- 14. Android傳感器
- 15. Android:傳感器
- 16. 如何使用pyserial流式傳感器傳感器?
- 17. 在Android晃動傳感器
- 18. Android傳感器CPU使用率
- 19. 如何使用中斷從光傳感器讀取數據結果
- 20. 在android中執行TYPE_SIGNIFICANT_MOTION傳感器
- 21. 閱讀iPhone的環境光傳感器
- 22. 光傳感器變暗屏幕?
- 23. 如何使用Android傳感器計算旋轉角度?
- 24. Android:慢光傳感器(僅當拔下插頭時)
- 25. Android光線傳感器未觸發事件
- 26. Android光傳感器採樣頻率太低
- 27. 使用ARKit讀取iOS光線傳感器
- 28. 如何在Android手機中使用磁性傳感器檢測金屬?
- 29. 如何隨時爲Android獲取光線傳感器值和電池電量?
- 30. 如何在ANDROID中實現/調試傳感器驅動程序
因爲我需要一些時間來處理這個問題,並沒有在網上看到任何解決方案。所以我想分享它來防止別人像我一樣掙扎。我選擇堆棧溢出的可見性。當我在谷歌上搜索時,我更喜歡SO鏈接而不是博客鏈接。 (而且我還沒有一個博客的方式) –
如果這是一個非常具體的問題,我應該詳細說明它。但事實上,我的問題實際上是「我想要統一光傳感器的價值」,除了花費45美元的插件沒有答案。所以我給了我的。當人們在代碼中遇到問題時,他們必須提供最多的信息,但在這裏並不是這樣。 –
我認爲這是一個非常有用的問題和答案。我之前做過類似的事情,並且知道很多人也想這樣做,這應該可以幫助他們。唯一的區別是當傳感器值發生變化時,我使用UnityPlayer.UnitySendMessage來調用C#函數。 – Programmer