Well, the Mesh class for unity is right here.
The first thing I suggested is bones, I haven’t dealt with them too much (or at all to be more specific) but they are probably as fast as your going to get. They are what is used in animating a characters arms and limbs and such in Unity. Theres an example here. I’m not very equipped to explain bones, but basically you attach them either in code or in your 3d modeling software to your mesh, and then by moving them the mesh is deformed along with it. (like a real life skeleton) You can attach them in any place you want though, have 2 of them, one attached to each side of the mouth, and then just move them up and down and you could go from smiling to frowning (maybe even attach some to the eyes, and the checks and get some more realistic animations). I’ll try to find some tutorials on that, incase no one else posts.
UV’s might work. What I was suggesting there is having 1 texture (no smaller textures inside it like you said before). Then you would have to get multiple UV’s into your script, but like I said before, and from what you can see on the link I gave you, you can only have 2 UVs. So if you want more your going to have to save 1-2 of your UVs (in blender) with one mesh, then save it again with another 2, and another 2 until you have all the UVs you want. Then import them all into unity, and in script you could then collect all of the UVs, something like this:
var meshes : Mesh[]; // This will let you put all your meshes into this script in the inspector.
private var UVs : Vector2[]; // This will be all your UVs, private cause you don't need to see it in the inspector.
function Start()
{
UVs = new Vector2[meshes.length]; // Get a variable ready to store all the UVs.
for(var i=0; i<UVs.Length; ++i)
{
UVs[i] = meshes[i].uv;
}
}
That will get you UVs, it doesn’t utilize the second uv, but just incase you have an odd number of them I just kept it simple. So basiically you’d export your mesh from blender 1 time for each UV, import them into unity, and put them in the meshes variable in the inspector. Then in an Update function you could lerp from one UV to the next. Basically if you have 1 texture applied to the mesh the whole time, then it would go from looking like it did with the first uv, to what it would look like with the second.
The other option I gave would basically be the same thing as the one above except you’d modify the vertices instead of the UVs… You’d still export your mesh multiple times, but not changing the UVs, you’d change the shape instead. and then you could lerp from one mesh to the next, so it would actually change in 3d and not just retexture.
As for knowing which to go for, I wan’t really pointing you in any direction at first, just throwing some ideas out there. But if your worried about speed, all of these would be pretty quick. Bones would probably be the fastest, and UVs would probably be just slightly above vertices. But modifying the vertices would probably be the best looking because you can modify the meshes how ever you see fit right in blender. Bones would probably look pretty good as well, but its not always as clear how they are going to modify the mesh. Then UVs would look the simplest and the flattest.
Those are all the ways I can think of for animating the face, not too sure what you mean though.