Sure, no problem.
Since this post, I've done some more work on optimizing and come up with a few other things. So in total, my optimization strategy is the following:
1 - Set all large music files (background music usually) to "Stream from Disc" and "Compressed" and uncheck the "3D Sound option". This is all just done in the Unity 3d Inspector screen when you select the music file.
2 - Select all meshes / skinned mesh renderers of objects used in your game and set the shader in the related material to Mobile / Diffused. I don't bother with normal maps and specular maps for a mobile game. Setting to a mobile ready diffuse shader cuts down the number of textures for that shader to just one. This is again done in the inspector screen in Unity when you select the material.
3 - For all textures being used in your game, make sure they are compressed as much as possible. Set the compression to "Compressed" or DXT5 if you're using Advanced settings. Now click the "Override for WP8" button in the inspector and select a low max texture size. Something like 32x32 for a small texture and 128x128 for a larger one. You can have the object using the texture on your scene view and then as you adjust the texture size, you'll see how it looks so you can experiment until you finding something acceptable. This is all done in the inspector screen again.
4 - If you are using Light Mapping (and I highly recommend it over dynamic shadows for performance reasons), you should also select the light map textures and reduce them to something small in the same way as you do for other textures.
5 - Animations can eat up a lot of memory if you are using the Legacy animation mode as I am. Therefore, for each object with animations, go into the animation compression setting in the inspector and make sure that animation compression is being sued. The default values of 0.5 / 0.5 / 0.5 can also be increased to something like 5 / 5 / 5 to reduce size of animation data and still get good results on mobile.
Now the above will apply to all Windows Phones so I would choose settings that look decent and not go too aggressive. Now you can use Unity's built in Quality Settings option to further compress textures and such. There is a built in one that further reduces textures by half. I would suggest, writing code that looks at the phone's memory and automatically changes the quality setting to that lower option if the memory is less than 512MB.
Is used the following script at my initial scene of my game. This is just attached to a game object in an empty scene.
**********
using UnityEngine;
using System.Collections;
public class QualityManager : MonoBehaviour {
// Use this for initialization
void Start () {
if (SystemInfo.systemMemorySize < 600)
{
QualitySettings.SetQualityLevel(0);
}
}
}
************
That all being said, I am running into difficulty getting my current game to run on a 512MB device. It's because it's a very ambitious 3D tactical RPG and gives the player a choice of 18 characters to choose from and can have lots of different enemies on the screen at one time ... all rendered in 3D graphics. So I suppose there are limits of what you can do but I really think this should be a very rare case.