89 lines
3.0 KiB
Markdown
89 lines
3.0 KiB
Markdown
![]() |
# Developer’s Guide
|
|||
|
|
|||
|
As a developer you have access to the FBX Exporter from C# scripting. You can use the basic API by providing a single GameObject or a list of GameObjects. Note that default export settings are used for exporting the GameObjects to the FBX file.
|
|||
|
|
|||
|
You can call the FBX Exporter from C# using methods found in the [UnityEditor.Formats.Fbx.Exporter](../api/UnityEditor.Formats.Fbx.Exporter.html) namespace, for example:
|
|||
|
|
|||
|
```
|
|||
|
using System.IO;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEditor;
|
|||
|
using UnityEditor.Formats.Fbx.Exporter;
|
|||
|
|
|||
|
public static void ExportGameObjects(Object[] objects)
|
|||
|
{
|
|||
|
string filePath = Path.Combine(Application.dataPath, "MyGame.fbx");
|
|||
|
ModelExporter.ExportObjects(filePath, objects);
|
|||
|
|
|||
|
// ModelExporter.ExportObject can be used instead of
|
|||
|
// ModelExporter.ExportObjects to export a single game object
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
## Runtime
|
|||
|
|
|||
|
The FBX SDK bindings can be executed during gameplay allowing import and export at runtime. Currently a custom importer/exporter needs to be written in order to do so, as the FBX Exporter is Editor only.
|
|||
|
|
|||
|
> **NOTE:** The FBX SDK bindings are Editor only by default and will not be included in a build. In order for the package to be included in the build, add the FBXSDK_RUNTIME define to Edit > Project Settings... > Player > Other Settings > Scripting Define Symbols.
|
|||
|
|
|||
|
### Basic Exporter:
|
|||
|
|
|||
|
```
|
|||
|
using Autodesk.Fbx;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEditor;
|
|||
|
|
|||
|
protected void ExportScene (string fileName)
|
|||
|
{
|
|||
|
using(FbxManager fbxManager = FbxManager.Create ()){
|
|||
|
// configure IO settings.
|
|||
|
fbxManager.SetIOSettings (FbxIOSettings.Create (fbxManager, Globals.IOSROOT));
|
|||
|
|
|||
|
// Export the scene
|
|||
|
using (FbxExporter exporter = FbxExporter.Create (fbxManager, "myExporter")) {
|
|||
|
|
|||
|
// Initialize the exporter.
|
|||
|
bool status = exporter.Initialize (fileName, -1, fbxManager.GetIOSettings ());
|
|||
|
|
|||
|
// Create a new scene to export
|
|||
|
FbxScene scene = FbxScene.Create (fbxManager, "myScene");
|
|||
|
|
|||
|
// Export the scene to the file.
|
|||
|
exporter.Export (scene);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### Basic Importer:
|
|||
|
|
|||
|
```
|
|||
|
using Autodesk.Fbx;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEditor;
|
|||
|
|
|||
|
protected void ImportScene (string fileName)
|
|||
|
{
|
|||
|
using(FbxManager fbxManager = FbxManager.Create ()){
|
|||
|
// configure IO settings.
|
|||
|
fbxManager.SetIOSettings (FbxIOSettings.Create (fbxManager, Globals.IOSROOT));
|
|||
|
|
|||
|
// Import the scene to make sure file is valid
|
|||
|
using (FbxImporter importer = FbxImporter.Create (fbxManager, "myImporter")) {
|
|||
|
|
|||
|
// Initialize the importer.
|
|||
|
bool status = importer.Initialize (fileName, -1, fbxManager.GetIOSettings ());
|
|||
|
|
|||
|
// Create a new scene so it can be populated by the imported file.
|
|||
|
FbxScene scene = FbxScene.Create (fbxManager, "myScene");
|
|||
|
|
|||
|
// Import the contents of the file into the scene.
|
|||
|
importer.Import (scene);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### Limitations
|
|||
|
|
|||
|
* Only 64 bit Windows, MacOS and Ubuntu standalone player builds are supported
|