How do you make pupils move along an oval-shaped eye?

I am using Blender to make a character with oval-shaped eyes for a game in Unity and have tried a couple of different techniques for making the pupils move along the surface so that the eyes do not pop out of the sockets when they rotate, however nothing has worked so far.

First, I tried using a lattice to stretch the eye with a damped track constraint on the eye’s bone so that it rotated without losing it’s oblong shape. Basically this effect.

Next, I tried using a decal attached to an empty in Blender so that it would be like animating a texture with a controlled location over the surface of the eye. Like this tutorial here.

However, when I import my model into Unity using either of these techniques it seems that Unity doesn’t work with either of these methods. So what is the typical way to make a character in Unity with oval-shaped eyes? Or is Unity just not capable of doing this?

I did my eyes by simply adjusting the mainTextureOffset, with a script to translate the direction of the object being looked at relative to the head to x and y values through trial-and-error tweaking until it looked right. Each eye is calculated independently, so they will get more cross-eyed as the look target gets closer. I don’t see any reason why this would not work as well on an oval eye or a triangular eye or a rectangular eye or whatever, assuming it is UV mapped properly.