void OnTest2(OscMessage message) { // Get arguments from index 0, 1 and 2 safely. int frameCount; float time; float random; if ( message.TryGet(0, out frameCount) && message.TryGet(1, out time) && message.TryGet(2, out random) ) { Debug.Log("Received test2\n" + frameCount + " " + time + " " + random + "\n"); } // If you don't know what type of arguments to expect, then you // can check the type of each argument and get the ones you need. for (int i = 0; i < message.Count(); i++) { OscArgType argType; if (!message.TryGetArgType(i, out argType)) { continue; } switch (argType) { case OscArgType.Float: float floatValue; message.TryGet(i, out floatValue); // Do something with floatValue here... break; case OscArgType.Int: int intValue; message.TryGet(i, out intValue); // Do something with intValue here... break; } } // Always recycle incoming messages when used. OscPool.Recycle(message); }