Hello Ashkan,
The texture 160x120x4 = 76800 bytes + (a few bytes protocol header) is actually larger then the maximum internet guarantied packet size (some routers allow higher but there is no guaranty), which is 1400 bytes (the default value of uLink.Network.config.maximumTransmissionUnit). However, uLink will automatically split a too big reliable RPC into smaller fragments, send the fragments separately and then assemble them back into one RPC again without the application even knowing. But this has not been added for unreliable RPCs yet, because
fragmenting a unreliable RPC has the potential to be used as a DOS attack to a greater extent. So there needs to be additional safeguards against that before implementing it for unreliable too. Automatic fragmentation of unreliable RPCs will most likely be added in uLink 2.0, but not for uLink 1.x.
In short: if you change networkView.UnreliableRPC to networkView.RPC when sending the pixels, it will work. But if you want use unreliable to avoid the overhead cost of reliability, you can split the pixels into smaller blocks and send the blocks individually to a receiver method like this:
[RPC]
void WebCamPixels(int x, int y, int blockWidth, int blockHeight, Color[] pixels)
{
targetTexture.SetPixels(x, y, blockWidth, blockHeight, pixels);
}
Sincerely,
Aidin