在unity中设置首选项值,在android中无法获取
我使用下面的代码在unity中设置首选项值在unity中设置首选项值,在android中无法获取,android,unity3d,unityscript,unity5,Android,Unity3d,Unityscript,Unity5,我使用下面的代码在unity中设置首选项值 rightJointPos = rightJoint.localPosition; PlayerPrefs.SetFloat ("rigX", rightJointPos.x); PlayerPrefs.SetFloat ("rigY", rightJointPos.y); PlayerPrefs.SetFloat ("rigZ", rightJointPos.z); PlayerPre
rightJointPos = rightJoint.localPosition;
PlayerPrefs.SetFloat ("rigX", rightJointPos.x);
PlayerPrefs.SetFloat ("rigY", rightJointPos.y);
PlayerPrefs.SetFloat ("rigZ", rightJointPos.z);
PlayerPrefs.Save ();
我使用下面的代码在android中获取值
SharedPreferences settings = getApplicationContext().getSharedPreferences(getApplicationContext().getPackageName(), Context.MODE_PRIVATE);
float rigX=settings.getFloat("rigX", 0.0f);
float rigY=settings.getFloat("rigY", 0.0f);
float rigZ=settings.getFloat("rigZ", 0.0f);
Toast.makeText(getApplicationContext(),"start 11 "+rigX+ ":"+rigY+":"+rigZ, 400).show();
我在toast中打印这个值。我总是得到0.0的值而不是实际值
如何在android中获得该值?
请帮我解决这个问题。这个代码缺少什么
提前感谢Android的
SharedReferences
和Unity的PlayerPrefs
是完全不同的数据存储API,具有不同的实现,并且两者不可互换
如果使用PlayerPrefs.SetFloat
保存,则必须使用PlayerPrefs.GetFloat
float rigX = PlayerPrefs.GetFloat("rigX", 0.0f);
float rigY = PlayerPrefs.GetFloat("rigY", 0.0f);
float rigZ = PlayerPrefs.GetFloat("rigZ", 0.0f);
如果从Java进行此调用,并且需要读取PlayerPrefs
,则必须使用UnityPlayer.UnitySendMessage
获取这些PlayerPrefs
值。由于UnityPlayer.UnitySendMessage
无法返回值,因此需要在其上加一个包装器
C#:
class SettingsReader : MonoBehaviour
{
//Sends the data from PlayerPrefs to the receiveResult function in Java
void sendResultToJava(float value)
{
AndroidJavaClass javaPlugin = new AndroidJavaClass("com.company.product.MyPlugin");
javaPlugin.Call("receiveResult", new object[] { value.ToString() } );
}
//Called from Java to get the saved PlayerPrefs
void getValue(string key)
{
float value = PlayerPrefs.GetFloat(key) //Get the saved value from key
sendResultToJava(value); //Send the value to Java
}
}
Java:
class SettingsReader : MonoBehaviour
{
//Sends the data from PlayerPrefs to the receiveResult function in Java
void sendResultToJava(float value)
{
AndroidJavaClass javaPlugin = new AndroidJavaClass("com.company.product.MyPlugin");
javaPlugin.Call("receiveResult", new object[] { value.ToString() } );
}
//Called from Java to get the saved PlayerPrefs
void getValue(string key)
{
float value = PlayerPrefs.GetFloat(key) //Get the saved value from key
sendResultToJava(value); //Send the value to Java
}
}
软件包:com.company.product.MyPlugin
Java端的用法:
float rigX = getSavedValue("rigX");
float rigY = getSavedValue("rigY");
float rigZ = getSavedValue("rigZ");
嘿,你试过我留下的答案了吗?它有用吗?我试过了,但没有得到价值