我想在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. 如何使用光线传感器
- 2. android:光传感器nullPointerException
- 3. 光传感器计
- 4. 如何使android compas传感器变得光滑
- 5. Android游戏如何使用传感器?
- 6. Android如何使用传感器?
- 7. 在Android中使用传感器数据
- 8. 在android中使用接近传感器
- 9. Android摄像头取光传感器值
- 10. 的Android光传感器阵列数据
- 11. Android光传感器返回null
- 12. 如何获取光线传感器值
- 13. 如何使用传感器
- 14. 如何使用指纹传感器在Android中验证用户?
- 15. 如何将背光android应用程序监视光线传感器前景
- 16. 如何在android中更改后立即从光传感器获取传感器数据?
- 17. Xperia Arc S光传感器
- 18. 获取光传感器值
- 19. 光传感器问题
- 20. 如何在android中使用外部传感器?
- 21. 如何在Android中使用旋转传感器
- 22. 在Android上使用React Native传感器
- 23. Android:传感器
- 24. Android传感器
- 25. Android可以使用光传感器获取光频吗?怎么样?
- 26. 如何使用pyserial流式传感器传感器?
- 27. Android光传感器检测显着的光线变化
- 28. iphone中的环境光线传感器
- 29. 在Android晃动传感器
- 30. 为什么在使用ROTATION_VECTOR传感器之前克隆Android传感器值?
因为我需要一些时间来处理这个问题,并没有在网上看到任何解决方案。所以我想分享它来防止别人像我一样挣扎。我选择堆栈溢出的可见性。当我在谷歌上搜索时,我更喜欢SO链接而不是博客链接。 (而且我还没有一个博客的方式) –
如果这是一个非常具体的问题,我应该详细说明它。但事实上,我的问题实际上是“我想要统一光传感器的价值”,除了花费45美元的插件没有答案。所以我给了我的。当人们在代码中遇到问题时,他们必须提供最多的信息,但在这里并不是这样。 –
我认为这是一个非常有用的问题和答案。我之前做过类似的事情,并且知道很多人也想这样做,这应该可以帮助他们。唯一的区别是当传感器值发生变化时,我使用UnityPlayer.UnitySendMessage来调用C#函数。 – Programmer