# DataObject attributes

### DataObjectIcon

Set an icon for this DataObject

* iconPath: name of icon located in Databrain/Core/Res/Icons or complete asset path: (Assets/MyType/Icons/customIcon.png)
* iconColor: Color of the icon

```csharp
[DataObjectIcon("alien", DatabrainColor.Red.GetColor)]
public class EnemyData : DataObject{}
```

### DataObjectTypeName

Set a custom name for this type

* typeName: the custom name

```csharp
[DataObjectTypeName("Enemy")]
public class EnemyData : DataObject{}
```

### DataObjectOrder

order this data type by the order index number

* order: odering index

```csharp
[DataObjectOrder(0)]
public class EnemyData : DataObject{}
```

### DataObjectMaxObjects

Set max allowed data objects for this data type. Useful for manager types where only one data object would make sense.

* maxObjects: number of allowed objects

### DataObjectHideBaseFields

Hide certain fields from the general foldout. (icon, title, description)

* hideIconField: if true, hide the icon field
* hideTitleField: if true, hide the title field
* hideDescriptionField: if true, hide the description field

### DataObjectHideAllFields

Hide all fields, useful when creating a custom GUI and the default data inspector shouldn't display any fields.

### DataObjectAddToRuntimeLibrary

Automatically add this DataObject to the runtime DataLibrary at start.

{% content-ref url="../guides/add-data-objects-at-runtime" %}
[add-data-objects-at-runtime](../guides/add-data-objects-at-runtime)
{% endcontent-ref %}

### DataObjectIMGUIInspector

Force the inspector to draw fields with IMGUI. This is just to maintain downward compatibility for certain property drawers.

### DataObjectLock

Lock data object creation for this type

### HideDataObjectType

Hide this data type in the list view.

### DataObjectSingleton

Mark this data object as a singleton object. A singleton DataObject can be easily retrieved using following API:

```csharp
MyManager manager = dataLibrary.GetSingleton<MyManager>();
```

### DataObjectCustomNamespaceIcon

Custom icon override for namespace foldout in the hierarchy. Only has to be added to one DataObject class which is in the corresponding namespace

### DataObjectFirstClassType

Marks this DataObject type and all other types which are in the same namespace as first class types. These are being displayed first in the hierarchy with additional icon and custom title. Only has to be added to one DataObject class which is in the corresponding namespace.

### DataObjectLink

Link this DataObject type to another DataObject type. This is useful for when a DataObject can't be in a namespace you'd like, because of the base type already being in a different namespace. In this case, simply create an empty DataObject inside of the namespace you want and add the attribute to it which points to the actual DataObject in the different namespace.

### DataObjectShowSubTypes

Show not only current, but also subtypes (inherited types) of this DataObject type in data object list.
