C# textureCoords issue

Hi

I am relatively new to C# and trying to learn it via Unity.

I am trying to convert the script below from JS to C#:

// Attach this script to a camera and it will paint black pixels in 3D
// on whatever the user clicks. Make sure the mesh you want to paint
// on has a mesh collider attached.
function Update () {
// Only when we press the mouse
if (!Input.GetMouseButton (0))
return;

// Only if we hit something, do we continue
var hit : RaycastHit;
if (!Physics.Raycast (camera.ScreenPointToRay(Input.mousePosition), hit))
return;

// Just in case, also make sure the collider also has a renderer
// material and texture. Also we should ignore primitive colliders.
var renderer : Renderer = hit.collider.renderer;
var meshCollider = hit.collider as MeshCollider;
if (renderer == null || renderer.sharedMaterial == null ||
renderer.sharedMaterial.mainTexture == null || meshCollider == null)
return;

// Now draw a pixel where we hit the object
var tex : Texture2D = renderer.material.mainTexture;
var pixelUV = hit.textureCoord;
pixelUV.x *= tex.width;
pixelUV.y *= tex.height;

tex.SetPixel(pixelUV.x, pixelUV.y, Color.black);

tex.Apply();
}

I have this bit that is bugging on me

Renderer rend = hit.collider.renderer;
Texture2D tex = (Texture2D)rend.material.mainTexture;

Vector2 pixelUV = hit.textureCoord;
pixelUV.x *= tex.width;
pixelUV.y *= tex.height;

tex.SetPixel(int.pixelUV.x, int.pixelUV.y,Color.black);

tex.Apply();

SetPixel need the x and y coords to be integers and pixelUV seems to be a Vector2 float. I get this
error:

Argument #1' cannot convert object’ expression to type `int’

What have I done wrong?

Try this instead:

tex.SetPixel((int)Math.Round(pixelUV.x), (int)Math.Round(pixelUV.y),Color.black);

You can take out the Math.Rounds if you want, but if I recall correctly, if you just straight up cast a float to an integer, it just chops off the decimal without rounding.