Unity 中Sirenix.OdinInspector 插件常用功能梳理

案例一


public class PracticeAssets : ScriptableObject
{[SerializeField][Searchable][ListDrawerSettings(ShowIndexLabels = true)][LabelText("練習版數據列表")]public List<PracticeData> Practicies = new List<PracticeData>();
}
1.?SerializeField
  • 用途:此特性允許?Practicies?字段在 Unity 編輯器中可見并可序列化,即使它是一個?private?字段也能被 Inspector 顯示出來。
  • 效果:使得程序員在腳本中定義的某個字段(在這里是?Practicies)能夠在 Unity 編輯器的 Inspector 面板中進行賦值和編輯。
2.?[Searchable]
  • 用途:這個特性通常用于自定義類或框架中的數據結構,允許在 Inspector 中搜索列表。這意味著在該列表中可以快速找到特定的?PracticeData
  • 效果:增強 UX(用戶體驗),使得在大量數據項中快速定位特定項變得容易。
3.?[ListDrawerSettings(ShowIndexLabels = true)]
  • 用途:使用這個特性可以自定義列表在 Inspector 中的顯示方式。這里的?ShowIndexLabels?設置為?true,表示在列表的每一項前面顯示它們的索引標簽(如 0, 1, 2...)。
  • 效果:使列表更加易于理解和管理,尤其在處理多個?PracticeData?實例時,索引能夠幫助用戶快速識別和訪問特定項。
4.?[LabelText("練習版數據列表")]
  • 用途:此特性用于指定在 Unity 編輯器 Inspector 中顯示的標簽。這允許您為?Practicies?列表設置一個更具描述性的名稱而非默認的字段名稱。
  • 效果:在 Inspector 中顯示為“練習版數據列表”,提高可讀性,并提供有意義的上下文信息,幫助開發者理解這個字段的用途。
5.?public List<PracticeData> Practicies = new List<PracticeData>();
  • 用途:這是字段的聲明。它定義了一個?public?類型的列表,列表中是?PracticeData?類型的對象。
  • 效果:允許將多個?PracticeData?實例存儲在?Practicies?列表中,同時由于是?public,可以在其它類中直接訪問此列表。

案例二

public class IndustryAssets : ScriptableObject
{[SerializeField][Searchable][ListDrawerSettings(ListElementLabelName = "GetClassName")][LabelText("行業列表")]public List<IndustryData> Industry = new List<IndustryData>();
}
1.[ListDrawerSettings(ListElementLabelName = "GetClassName")]
  • 用途:此特性用于配置列表的顯示方式。在這里,ListElementLabelName?指定使用?GetClassName?方法返回的值作為每個列表項的標簽。
  • 效果:使得在 Inspector 中查看?Industry?列表時,每個?IndustryData?實例將使用其?GetClassName()?方法的返回值作為標簽,使得列表更具可讀性和可管理性。

案例三

[ReadOnly]  
[GUIColor("red")]  
[LabelText("數據驗證:")]  
public string ErrorMessage;
1.[ReadOnly]
  • 用途:表示該字段在 Unity Inspector 中為只讀,不允許用戶編輯。
  • 效果:防止用戶在 Inspector 中修改該字段的值,確保程序邏輯控制該字段。
2.[GUIColor("red")]
  • 用途:為該字段指定一個顏色,這里設置為紅色。
  • 效果:在 Inspector 中顯示該字段時,以紅色突出顯示,通常用于表示錯誤或警告消息。

案例四

[Space]  
[Searchable]  
[OnStateUpdate("CheckList")]  
[ListDrawerSettings(ShowIndexLabels = true)]  
[LabelText("隱患點數據列表")]  
public List<DataConfigStruct> DataList = new List<DataConfigStruct>();
1.[Space]
  • 用途:在 Inspector 中創建一個空間,用于分隔不同的部分。
  • 效果:使變量的布局更清晰,不會擁擠在一起。
2.[OnStateUpdate("CheckList")]
  • 用途:在狀態更新時自動調用?CheckList?方法。
  • 效果:每當數據發生改變或進入檢查狀態時,CheckList?方法會被自動調用,以驗證數據的完整性。
3.[ListDrawerSettings(ShowIndexLabels = true)]
  • 用途:配置列表在 Inspector 中的顯示方式,顯示每個元素的索引標簽。
  • 效果:使得用戶可以看到列表中每一項的位置編號,便于管理和引用特定項。

方法 CheckList

private void CheckList()  
{  // 檢查應用程序是否正在運行,如果是,則不執行驗證邏輯  if (Application.isPlaying)  return;  // 創建一個用于存儲所有 ID 的列表  List<uint> idList = new List<uint>();  // 遍歷 DataList 列表,提取每個 DataConfigStruct 對象的 ID  for (int i = 0; i < DataList.Count; i++)  {  // 將每個對象的 ID 添加到 idList 列表中  idList.Add(DataList[i].ID);  }  // 使用 LINQ 查詢查找重復的 ID 值  var duplicates = idList.GroupBy(n => n) // 根據 ID 分組  .Where(g => g.Count() > 1) // 只選擇計數大于 1 的組,即重復的 ID  .Select(g => g.Key); // 選擇每個重復組的 ID  // 檢查是否存在重復的 ID  if (duplicates.Count() > 0)  {  // 如果發現重復 ID,更新錯誤信息  foreach (var number in duplicates)  {  // 設置錯誤信息,包含找到的重復 ID  ErrorMessage = string.Format("驗證不通過,存在相同的唯一ID: {0}", number);  }  }  else  {  // 如果沒有重復 ID,設置驗證通過的消息  ErrorMessage = string.Format("驗證通過");  }  
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896460.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896460.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896460.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ | 面向對象 | 類

&#x1f47b;類 &#x1f47e;語法格式 class className{Access specifiers: // 訪問權限DataType variable; // 變量returnType functions() { } // 方法 };&#x1f47e;訪問權限 class className {public:// 公有成員protected:// 受保護成員private:// 私有成員 }…

從零開始用react + tailwindcss + express + mongodb實現一個聊天程序(五) 實現登錄功能

1.登錄頁面 完善登錄頁面 和注冊差不多 直接copy signUpPage 內容 再稍微修改下 import { useState } from "react"; import { useAuthStore } from "../store/useAuthStore"; import { MessageSquare,Mail,Lock,Eye, EyeOff,Loader2} from "lucide…

Spring Boot電影評論網站系統設計與實現

隨著互聯網和娛樂產業的發展&#xff0c;電影評論網站逐漸成為人們分享觀影體驗、交流影評的重要平臺。本文將介紹一個基于Spring Boot框架開發的電影評論網站系統的功能設計與實現方案。 功能模塊概述 該電影評論網站系統分為管理員模塊和用戶模塊兩大核心部分&#xff0c;以…

XFeat:輕量級的深度學習圖像特征匹配

一、引言&#xff1a;圖像特征匹配的挑戰與XFeat的突破 在計算機視覺領域&#xff0c;圖像特征匹配是視覺定位&#xff08;Visual Localization&#xff09;、三維重建&#xff08;3D Reconstruction&#xff09;、增強現實&#xff08;AR&#xff09;等任務的核心基礎。傳統方…

【TVM教程】為 NVIDIA GPU 自動調度神經網絡

Apache TVM 是一個深度的深度學習編譯框架&#xff0c;適用于 CPU、GPU 和各種機器學習加速芯片。更多 TVM 中文文檔可訪問 →https://tvm.hyper.ai/ 作者&#xff1a;Lianmin Zheng 針對特定設備和工作負載的自動調優對于獲得最佳性能至關重要。本文介紹如何使用 auto-sched…

postgresql postgis擴展相關

項目 下載地址 http://rpmfind.net/linux/rpm2html/search.php?queryprotobuf(x86-64) Postgis Index of /postgis/source/ proj4 Index of /proj/ geos Index of /geos/ libxml2 ftp://xmlsoft.org/libxml2/ Index of /sources Json-c Releases json-c/json-c G…

解鎖健康密碼,擁抱養生生活

在快節奏的現代生活中&#xff0c;健康養生愈發重要&#xff0c;它是我們保持活力、預防疾病、享受美好生活的關鍵。那究竟如何開啟健康養生之旅呢&#xff1f; 合理飲食是養生基石。遵循 “食物多樣&#xff0c;谷類為主” 原則&#xff0c;每日攝入谷薯類、蔬菜水果、畜禽魚蛋…

JavaWeb中的cookie使用

Cookie 1、Cookie是服務端向客戶端響應的一小段數據&#xff0c;最終存放在客戶端中&#xff1b;之后客戶端每次向服務端發送請求&#xff0c;都會在請求頭中攜帶cookie 2、cookie是有時效性的&#xff0c;默認是Session級別&#xff08;整個瀏覽器關閉才會消失&#xff0c;內存…

el-input實現金額輸入

需求&#xff1a;想要實現一個輸入金額的el-input&#xff0c;限制只能輸入數字和一個小數點。失焦數字轉千分位&#xff0c;聚焦轉為數字&#xff0c;超過最大值&#xff0c;紅字提示 效果圖 失焦 聚焦 報錯效果 // 組件limitDialog <template><el-dialog:visible.s…

AcWing 藍橋杯集訓·每日一題2025·密接牛追蹤2

密接牛追蹤2 農夫約翰有 N 頭奶牛排成一排&#xff0c;從左到右依次編號為 1~N。 不幸的是&#xff0c;有一種傳染病正在蔓延。 最開始時&#xff0c;只有一部分奶牛受到感染。 每經過一個晚上&#xff0c;受感染的牛就會將病毒傳染給它左右兩側的牛&#xff08;如果有的話…

30 分鐘從零開始入門 CSS

HTML CSS JS 30分鐘從零開始入門拿下 HTML_html教程-CSDN博客 30 分鐘從零開始入門 CSS-CSDN博客 JavaScript 指南&#xff1a;從入門到實戰開發-CSDN博客 前言 最近也是在復習&#xff0c;把之前沒寫的博客補起來&#xff0c;之前給大家介紹了 html&#xff0c;現在是 CSS 咯…

LabVIEW圖像識別抗干擾分析

問題描述 在基于LabVIEW的探針定位系統中&#xff0c;存在兩個核心技術難點&#xff1a; 相機畸變導致初始定位誤差&#xff1a;非線性畸變使探針無法通過坐標變換直接精確定位&#xff0c;需采用粗定位圖像修正的兩段式控制策略。 圖像識別可靠性不足&#xff1a;復雜背景&a…

淺顯易懂HashMap的數據結構

HashMap 就像一個大倉庫&#xff0c;里面有很多小柜子&#xff08;數組&#xff09;&#xff0c;每個小柜子可以掛一串鏈條&#xff08;鏈表&#xff09;&#xff0c;鏈條太長的時候會變成更高級的架子&#xff08;紅黑樹&#xff09;。下面用超簡單的例子解釋&#xff1a; ?壹…

drupal如何支持多語言

Drupal 支持多語言的功能強大&#xff0c;可以幫助網站實現多語言內容管理。以下是如何在 Drupal 中配置和啟用多語言支持的步驟&#xff1a; 1. 啟用多語言模塊 首先&#xff0c;您需要確保已啟用 Drupal 的相關模塊。這些模塊包括&#xff1a; Language&#xff08;語言&a…

【HarmonyOS Next】鴻蒙應用折疊屏設備適配方案

【HarmonyOS Next】鴻蒙應用折疊屏設備適配方案 一、前言 目前應用上架華為AGC平臺&#xff0c;都會被要求適配折疊屏設備。目前華為系列的折疊屏手機&#xff0c;有華為 Mate系列&#xff08;左右折疊&#xff0c;華為 Mate XT三折疊&#xff09;&#xff0c;華為Pocket 系列…

SE注意力機制詳解:從原理到應用,全面解析Squeeze-and-Excitation模塊

Squeeze-and-Excitation (SE) 模塊的原理與應用 1. 引言&#xff1a;注意力機制的意義 在深度學習領域&#xff0c;注意力機制&#xff08;Attention Mechanism&#xff09;通過模擬人類視覺的“聚焦”特性&#xff0c;賦予模型動態調整特征重要性的能力。傳統卷積神經網絡&a…

Python基礎大全:Python變量詳解

以下是 Python 變量的詳細解析&#xff1a; 1. 變量的本質 Python 變量本質上是一個 指向對象的引用&#xff08;類似標簽&#xff09;&#xff0c;而不是存儲數據的容器。 變量賦值 a 10 時&#xff0c;Python 會創建一個整數對象 10&#xff0c;然后讓變量 a 指向這個對象…

減少內存占用的兩種方法|torch.no_grad和disable_torch_init

方法區別 在 PyTorch 中&#xff0c;disable_torch_init 和 torch.no_grad() 是兩種完全不同的機制&#xff0c;它們的作用和目的不同&#xff0c;以下是它們的區別&#xff1a; 1. disable_torch_init 作用&#xff1a;disable_torch_init 通常用于某些特定的框架或庫中&am…

數據挖掘工程師的技術圖譜和學習路徑

數據挖掘工程師的技術圖譜和學習路徑: 1.基礎知識 數據挖掘工程師是負責從大量數據中發現潛在模式、趨勢和規律的專業人士。以下是數據挖掘工程師需要掌握的基礎知識: 數據庫知識:熟悉關系數據庫和非關系數據庫的基本概念和操作,掌握SQL語言。 統計學基礎:了解統計學的基…

UE5 Computer Shader學習筆記

首先這里是綁定.usf文件的路徑&#xff0c;并聲明是用聲明著色器 上面就是對應的usf文件路徑&#xff0c;在第一張圖進行鏈接 Shader Frequency 的作用 Shader Frequency 是 Unreal Engine 中用于描述著色器類型和其執行階段的分類。常見的 Shader Frequency 包括&#xff1a…