How can I read/write the “Create Visual Studio Solution” option from an editor script?
How can I read/write the “Create Xcode Project” option from an editor script?
I guess it’s done through EditorUserBuildSettings.SetPlatformSettings / GetPlatformSettings, but having no documentation what settings Unity actually provides, makes it pretty hard. Is there such a list somewhere btw?
I finally figured it out after inspecting some files in the Library folder. As mentioned in the first post, you get/set these settings via EditorUserBuildSettings.SetPlatformSettings / GetPlatformSettings.
Here are the arguments you need to pass:
+--------------+------------------------+
| Platform | Setting |
|--------------+------------------------+
| Standalone | CopyPDBFiles |
| Standalone | CreateSolution |
| OSXUniversal | CreateXcodeProject |
+--------------+------------------------+
5 Likes
This was really helpful. Additionally, did anyone manage to get it to work with the scriptable build pipeline? I tried to set the value in a custom build step. But it seems that it was ignored in the final build.
public class BuildXcodeSettings : IBuildComponent
{
public bool GenerateXcode;
public bool OnGUI()
{
EditorGUI.BeginChangeCheck();
GenerateXcode = EditorGUILayout.Toggle("GenerateXcode", GenerateXcode);
return EditorGUI.EndChangeCheck();
}
}
public class BuildStepGenerateXCode : ClassicBuildPipelineCustomizer
{
public override void OnBeforeBuild()
{
var buildXcodeSettings = Context.GetComponentOrDefault<BuildXcodeSettings>();
Debug.Log($"Generate Xcode Project {buildXcodeSettings.GenerateXcode}");
EditorUserBuildSettings.SetPlatformSettings(
"OSXUniversal",
"CreateXcodeProject",
buildXcodeSettings.GenerateXcode ? "true" : "false"
);
}
public override Type[] UsedComponents => new[] {typeof(BuildXcodeSettings)};
}
For a newer Unity version (I’m using 2020.3.30), there are undocumented APIs for these options:
- UnityEditor.WindowsStandalone.UserBuildSettings.copyPDBFiles
- UnityEditor.WindowsStandalone.UserBuildSettings.createSolution
- UnityEditor.OSXStandalone.UserBuildSettings.createXcodeProject
5 Likes