我正在尝试填写数组的静态列表。RTTWifiPositionsToJava
Unity(C#)使用此函数传递每个WifiPosition的参数。但是列表中的每个项目都m_RTTWifiPositions
具有与上次增加的值相同的值。
有人可以帮忙吗,谢谢:)
static class RTTWifiPos
{
static String strMacAddress;
static double posX, posY, posZ;
static double distance;
static double distanceDev;
}
static List<RTTWifiPos> m_RTTWifiPositions;
public static boolean RTTWifiPositionsToJava(int nIndex, String strMacAddress, double PosX, double PosY, double PosZ, double distance, double distanceStdDev)
{
if(nIndex == 0)
{
if(m_RTTWifiPositions != null)
m_RTTWifiPositions.clear();
else
m_RTTWifiPositions = new ArrayList<RTTWifiPos>();
}
RTTWifiPos rttpos = new RTTWifiPos();
rttpos.strMacAddress = strMacAddress;
rttpos.posX = PosX;
rttpos.posY = PosY;
rttpos.posZ = PosZ;
rttpos.distance = distance;
rttpos.distanceDev = distanceStdDev;
m_RTTWifiPositions.add(rttpos);
return true;
}
该函数RTTWifiPositionsToJava
是从Unity3D调用的,如下所示:
for (nIndex = 0; nIndex < WifiRTTSignals.Count; nIndex++)
{
result = m_pluginWifiRTTClass.CallStatic<bool>("RTTWifiPositionsToJava", nIndex, WifiRTTSignals[nIndex].macAddress, (double) WifiRTTSignals[nIndex].pos.x, (double) WifiRTTSignals[nIndex].pos.y, (double) WifiRTTSignals[nIndex].pos.z, (double) WifiRTTSignals[nIndex].distance, (double) 0f);
}
谢谢flaimme,我想通过使用
RTTWifiPos rttpos = new RTTWifiPos();
一切都拥有一个新实例?但我会遵循您和sleepToken的提示。通过使用,
RTTWifiPos rttpos = new RTTWifiPos();
您得到了一个新对象,但声明为static的变量将与相同类型的所有对象相同。