void InitIfNeeded() { if (!m_Initialized) { // Check if it already exists (deserialized from window layout file or scriptable object) if (m_TreeViewState == null) { m_TreeViewState = new TreeViewState(); } bool firstInit = m_MultiColumnHeaderState == null; var headerState = MultiColumnTreeView.CreateDefaultMultiColumnHeaderState(multiColumnTreeViewRect.width); if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_MultiColumnHeaderState, headerState)) { MultiColumnHeaderState.OverwriteSerializedFields(m_MultiColumnHeaderState, headerState); } m_MultiColumnHeaderState = headerState; var multiColumnHeader = new MyMultiColumnHeader(headerState); if (firstInit) { multiColumnHeader.ResizeToFit(); } var treeModel = new TreeModel <MyTreeElement>(GetData()); m_TreeView = new MultiColumnTreeView(m_TreeViewState, multiColumnHeader, treeModel); m_SearchField = new SearchField(); m_SearchField.downOrUpArrowKeyPressed += m_TreeView.SetFocusAndEnsureSelectedItem; m_Initialized = true; } }
void InitIfNeeded() { if (!m_Initialized) { // Check if it already exists (deserialized from window layout file or scriptable object) if (m_TreeViewState == null) { m_TreeViewState = new TreeViewState(); } bool firstInit = m_MultiColumnHeaderState == null; // headerState: MultiColumnHeaderState结构 var headerState = MultiColumnTreeView.CreateDefaultMultiColumnHeaderState(multiColumnTreeViewRect.width); // 检查,是否有序列化的MultiColumnHeaderState数据,可以使用 // CanOverwriteSerializedFields: // Checks if the source state can transfer its serialized data to the destination state. // Some of the fields in the MultiColumnHeader state are serializable so they can be preserved // between assembly reloads and/or when restarting Unity. // The non-serialized fields have to be reconstructed. // After having reconstructed the state use this method before calling OverwriteSerializedFields to apply // any serialized fields from a previous session. if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_MultiColumnHeaderState, headerState)) { MultiColumnHeaderState.OverwriteSerializedFields(m_MultiColumnHeaderState, headerState); } m_MultiColumnHeaderState = headerState; // 根据MultiColumnHeaderState结构 // 创建MultiColumnHeader结构 var multiColumnHeader = new MyMultiColumnHeader(headerState); if (firstInit) { multiColumnHeader.ResizeToFit(); } var treeModel = new TreeModel <MyTreeElement>(GetData()); m_TreeView = new MultiColumnTreeView(m_TreeViewState, multiColumnHeader, treeModel); m_SearchField = new SearchField(); m_SearchField.downOrUpArrowKeyPressed += m_TreeView.SetFocusAndEnsureSelectedItem; m_Initialized = true; } }
void InitIfNeeded() { if (!m_Initialized) { // Check if it already exists (deserialized from window layout file or scriptable object) if (m_TreeViewState == null) { m_TreeViewState = new TreeViewState(); } var headerState = MultiColumnTreeView.CreateDefaultMultiColumnHeaderState(multiColumnTreeViewRect.width); if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_MultiColumnHeaderState, headerState)) { MultiColumnHeaderState.OverwriteSerializedFields(m_MultiColumnHeaderState, headerState); } m_MultiColumnHeaderState = headerState; var multiColumnHeader = new MyMultiColumnHeader(headerState); var treeModel = new TreeModel <MyTreeElement>(GetData()); m_TreeView = new MultiColumnTreeView(m_TreeViewState, multiColumnHeader, treeModel); m_Initialized = true; } }