﻿WEBVTT

00:00:00.206 --> 00:00:03.771
您好，歡迎使用藝術家腳本。我叫Sybren。

00:00:03.771 --> 00:00:10.266
在這一集中，在之前的視頻中我們將訪問許多人要求的主題，即用戶界面。

00:00:11.099 --> 00:00:15.534
我們創建了自己的運算符，然後將其轉換為Add-on。

00:00:17.468 --> 00:00:22.423
在Blender中創建自己的用戶界面的基礎與創建類別幾乎相同。

00:00:24.974 --> 00:00:29.689
您添加一些屬性。您向它添加一個功能，然後註冊該東西。

00:00:30.174 --> 00:00:33.664
因此，在此視頻中，我們將介紹

00:00:33.664 --> 00:00:36.539
接下來，將查找現有的UI代碼。

00:00:36.539 --> 00:00:43.179
因此，如果您想知道，他們是怎麼做到的？之後，您將知道在哪裡找到它。

00:00:43.179 --> 00:00:49.184
在製作自己的猴子網格面板之前，我們將研究面板的成分。還有什麼？

00:00:49.184 --> 00:00:54.049
將在面板上添加運算子按鈕，然後對佈局進行一些調整。

00:00:54.049 --> 00:00:57.099
然後，我們將添加場景對象屬性

00:00:57.099 --> 00:00:59.829
對此。我們還將研究條件繪圖。

00:00:59.829 --> 00:01:05.039
因為有時沒有活動對象，所以您將無法從活動對像中繪製屬性。

00:01:05.039 --> 00:01:10.359
最後，我們將研究將自己的運算符添加到Blender中的現有菜單中。

00:01:10.873 --> 00:01:15.758
在我們做自己的之前，讓我們看一下Blender中的現有面板。

00:01:16.073 --> 00:01:19.153
在3D視圖中，按N以顯示面板。

00:01:19.269 --> 00:01:24.499
接著讓我們看一下3D游標面板，右鍵單擊並選擇“編輯源”。

00:01:24.801 --> 00:01:31.826
如果看不到“編輯源代碼”選項，請轉到“偏好設置”，
“界面”並啟用“開發人員附加功能”

00:01:31.826 --> 00:01:35.821
在Python工具提示中，然後它應該會顯示出來。

00:01:35.821 --> 00:01:38.671
讓我們看看如果單擊它會發生什麼。

00:01:38.671 --> 00:01:44.066
混合模式在角落告訴我們，但是由於我的縮放比例，它有點遠。

00:01:44.066 --> 00:01:47.116
基本上，它告訴我們去文本編輯器，

00:01:47.116 --> 00:01:52.296
然後我們應該找到帶有源文件。但是，有一種更簡單的方法。

00:01:52.296 --> 00:01:56.281
如果拆分此窗口，並確保此處有文本編輯器，

00:01:58.042 --> 00:02:00.137
則可以單擊“編輯源代碼”

00:02:00.800 --> 00:02:05.585
那裡，您有文件。它會為您打開，甚至滾動到右行。

00:02:07.833 --> 00:02:11.643
讓我們滾動瀏覽一下，看看我們能找到什麼。

00:02:11.721 --> 00:02:17.256
如我們所見，將運算符作為一個類，它具有相同的命名方式。

00:02:17.256 --> 00:02:22.141
它具有大寫的類別，然後是“面板類型”而不是“運算子類型”的“

00:02:22.141 --> 00:02:25.581
PT”。 然後以小寫形式顯示其餘的標識符。

00:02:27.313 --> 00:02:29.398
在這裡，您有面板類。

00:02:30.103 --> 00:02:34.718
在這種情況下，是面板和那個運算子。你會期望

00:02:34.718 --> 00:02:38.518
這裡是“bpy.type.panel”，而不僅僅是“panel”。

00:02:38.518 --> 00:02:42.168
我們將稍等一下。讓我們尋找其他共同點。

00:02:42.360 --> 00:02:50.145
首先是“bl標籤”，它是面板的名稱，用戶界面，然後是類別，區域類型和空格類型。

00:02:52.601 --> 00:02:57.396
空間類型和區域類型描繪了它將在用戶界面中顯示的位置。

00:02:58.129 --> 00:03:03.249
在這種情況下，我們正在研究3D視圖和區域類型是UI，

00:03:03.504 --> 00:03:07.859
這意味著它在3D視圖中，而不在頁首或頁尾中。

00:03:08.595 --> 00:03:11.605
然後類別是View這是此處標籤的名稱。

00:03:13.265 --> 00:03:16.485
然後，我們將成為面板名稱的標籤。

00:03:17.856 --> 00:03:22.211
運算子在哪裡一個執行功能，執行運算子的任務。

00:03:24.065 --> 00:03:27.630
在這裡，我們有一個繪製函數來繪製面板。

00:03:27.630 --> 00:03:30.660
繪圖本身是通過“self.layout”完成的

00:03:30.824 --> 00:03:32.849
這是一個UI佈局實例。

00:03:33.856 --> 00:03:39.766
您可以通過“幫助”找到它，然後找到“Python API參考”，
然後搜索UILayout，

00:03:40.759 --> 00:03:44.724
一個詞。在那裡，您將找到所有可能的類描繪。

00:03:45.740 --> 00:03:51.370
在本視頻中，我將繼續向您展示基礎知識，那將使您走得更遠。

00:03:51.370 --> 00:03:53.820
現在，讓我們回到類描繪，

00:03:53.820 --> 00:03:55.260
因為我們看到了

00:03:55.260 --> 00:03:59.430
該面板在這裡，這與我們之前看到的有所不同。

00:04:00.272 --> 00:04:05.612
就像我說的那樣，您會期望像“bpy.type.panel”這樣的東西，

00:04:05.612 --> 00:04:07.097
而不僅僅是“panel”。

00:04:07.242 --> 00:04:11.037
這是因為在此文件中，導入方式是不同的。

00:04:12.131 --> 00:04:17.461
讓我們滾動到頂部，在這裡您可以從“bpy.type import”中看到

00:04:17.461 --> 00:04:21.446
標頭，菜單和面板。因此，您只需鍵入“

00:04:23.374 --> 00:04:25.724
panel”而不是“bpy.type.panel”，

00:04:26.667 --> 00:04:28.442
它指的是同一件事。

00:04:28.878 --> 00:04:34.653
我個人會說，對於這樣的輸入要非常小心。它可以節省您一些打字

00:04:34.653 --> 00:04:40.288
這聽起來似乎是一件好事，但您閱讀代碼的方式要比編寫代碼的方式多。

00:04:41.086 --> 00:04:47.036
我會一直優化以獲得代碼的可讀性和可理解性，而不是節省幾秒鐘的擊鍵。

00:04:50.371 --> 00:04:51.531
唯一的時間

00:04:51.531 --> 00:04:55.661
我將使用這樣的導入的地方非常清楚發生了什麼。

00:04:56.446 --> 00:05:00.446
在這種情況下，它是Blender的用戶界面描繪，

00:05:00.446 --> 00:05:05.036
而且只有一個標題，只有一個菜單，只有一個面板，

00:05:05.037 --> 00:05:07.417
它們總是來自“bpy.types”。

00:05:08.242 --> 00:05:12.397
因此，在這種情況下，我認為它可以接受。

00:05:12.397 --> 00:05:17.717
不過總的來說，我會避免這種情況，並始終使用事物的全名

00:05:17.717 --> 00:05:21.142
這樣一來，您就可以清楚知道它的來源。

00:05:21.142 --> 00:05:26.797
現在，這已不復存在。讓我們進入並為猴子網格製作自己的面板。

00:05:26.797 --> 00:05:29.377
讓我們看一下我們的插件代碼

00:05:29.377 --> 00:05:31.207
我們上次離開的地方。

00:05:31.207 --> 00:05:33.687
因此，這裡有“monkey grid.py”。

00:05:35.037 --> 00:05:38.987
具有猴子網格運算符類以及註冊和註銷功能。

00:05:42.496 --> 00:05:47.481
現在，要做到這一點，我們可以添加一個猴子網格面板。

00:05:47.871 --> 00:05:53.651
因此，就像之前一樣，我們創建我們的類，並為其正確命名。

00:05:53.651 --> 00:05:58.501
我保留類別“view 3D”，因為無論如何它都是一個View 3D面板。

00:05:58.501 --> 00:06:03.851
我們必須去PT。我稱它為“猴子網格”然後擴展“bpy.type.panel”。

00:06:05.729 --> 00:06:10.269
我只是將這些值從3D游標面板複製到“猴子”類別中

00:06:10.269 --> 00:06:14.904
所以我們在那裡有我們自己的小標籤。我將其標記為“網格”。

00:06:17.376 --> 00:06:20.691
然後，您唯一真正需要的就是Draw函數。

00:06:21.510 --> 00:06:27.390
為了使其顯示為面板，它需要具有Draw功能，即使該功能沒有作用。

00:06:28.258 --> 00:06:32.283
而且因為Python中的函數總是必須要有一些東西，

00:06:33.042 --> 00:06:37.752
我在這裡輸入“pass”，這是Python代碼不執行任何操作的原因。

00:06:37.997 --> 00:06:42.517
縮進“：”後的每個代碼塊，每個縮進博客都需要

00:06:43.918 --> 00:06:46.373
那裡有一點文字，以確保

00:06:47.458 --> 00:06:49.348
Python知道它是縮進的。

00:06:51.305 --> 00:06:54.280
這就是為什麼他們使用“通過”關鍵字。

00:06:54.471 --> 00:06:59.341
現在，剩下的唯一事情就是告訴Blender這個類首先存在，

00:07:00.206 --> 00:07:01.891
這意味著要註冊它。

00:07:01.891 --> 00:07:05.371
我們可以複製register和unregister類的函數調用，

00:07:07.300 --> 00:07:10.320
然後放入我們的新類，就是這樣。

00:07:11.379 --> 00:07:13.649
我們去Blender，走著瞧吧。

00:07:14.415 --> 00:07:17.785
現在，我們要做的就是重新加載腳本。

00:07:17.785 --> 00:07:21.825
轉到系統，重新加載腳本，您將看到“猴子”

00:07:21.949 --> 00:07:25.449
在這裡彈出。此路線還使您可以右鍵單擊

00:07:26.923 --> 00:07:29.028
然後添加到快速收藏夾。

00:07:29.646 --> 00:07:32.546
您可以按Q，然後重新加載腳本，

00:07:33.710 --> 00:07:37.145
將為您提供一種快速重新加載它們的方法。

00:07:37.145 --> 00:07:40.855
當我們轉到“猴子”選項卡時，我們可以看到

00:07:40.855 --> 00:07:44.260
我們的網格面板在這裡。還沒有任何東西。

00:07:44.260 --> 00:07:49.440
當然，我們在那裡沒有畫任何東西，但至少它會顯示出來。

00:07:49.440 --> 00:07:51.760
我們為運算子放置一個按鈕。

00:07:51.760 --> 00:07:55.700
讓我們回到代碼，然後在“繪製”“self.layout”中

00:07:55.700 --> 00:07:59.125
讓我們畫畫。要繪製運算符，請鍵入

00:07:59.436 --> 00:08:02.776
“operator”，然後輸入運算符的ID名稱

00:08:04.564 --> 00:08:07.634
你想在那裡。讓我們將其粘貼粘貼。

00:08:09.229 --> 00:08:11.714
轉到Blender，重新加載腳本。

00:08:12.913 --> 00:08:19.083
在那裡，您可以看到，網格面板中有一個猴子抓握按鈕，它確實有效。

00:08:19.365 --> 00:08:22.325
要自描繪此按鈕，有幾種可能性。

00:08:22.386 --> 00:08:27.711
讓我們來看一下它們。首先，我們可以更改按鈕上顯示的文本。

00:08:32.085 --> 00:08:34.895
因此，我們將其稱為“默認網格”。

00:08:34.895 --> 00:08:39.735
因為按下此按鈕，只會為我們提供默認屬性。保存文件，

00:08:39.735 --> 00:08:44.400
回到Blender，重新加載腳本，現在它被稱為“默認網格”。

00:08:45.227 --> 00:08:51.882
令人高興的是，如果我們搜索“猴子網格”，它在F3面板中仍稱為“猴子網格”，

00:08:52.419 --> 00:08:54.484
因為那是運算子的名字。

00:08:55.276 --> 00:09:00.846
只是在用戶界面的這個特定位置上，我們在按鈕上有不同的文字。

00:09:02.018 --> 00:09:05.003
最後，我們可以為其添加一個圖標。

00:09:07.233 --> 00:09:13.368
然後我們必須知道該圖標的名稱，因此您可以查看現有代碼以欺騙該圖標，

00:09:14.419 --> 00:09:20.869
也可以激活圖標查看器插件。它與Blender捆綁在一起，但默認情況下未激活。

00:09:20.869 --> 00:09:23.044
然後，在Python代碼中，

00:09:23.044 --> 00:09:25.589
您會得到一個名為Icon Viewer的按鈕。

00:09:25.589 --> 00:09:30.459
您可以單擊所需的圖標。說一隻猴子。這被複製到剪貼板上，

00:09:31.336 --> 00:09:35.156
將其粘貼到此處，保存，然後返回Blender，

00:09:35.156 --> 00:09:38.581
重新加載腳本，然後在其中找到圖標。

00:09:39.732 --> 00:09:42.922
在工具提示中，您還可以查看說明。

00:09:43.929 --> 00:09:48.649
您會看到它實際上將調用我們的運算符將所有默認參數。

00:09:49.387 --> 00:09:52.607
讓我們對其進行調整併進行一些按鈕

00:09:52.607 --> 00:09:55.472
這些參數使用特定值而不是默認值。

00:09:56.114 --> 00:09:58.599
再說一次，我們回到源頭。

00:10:00.390 --> 00:10:03.805
讓我們複製此調用，而不是僅僅擁有它，

00:10:05.540 --> 00:10:08.715
我們可以說“props = self.layout.operator......”

00:10:11.632 --> 00:10:13.722
讓我們將其更改為“Big Grid”，

00:10:15.712 --> 00:10:19.862
“self.layout.operator”是一個返回某些內容的函數，

00:10:19.862 --> 00:10:22.807
它返回的東西代表了運算符的屬性。

00:10:24.215 --> 00:10:27.805
在這裡我們可以說“道具”。讓我們來看一下。

00:10:31.173 --> 00:10:33.663
我們有“X數”，“Y數”和“大小”。

00:10:35.521 --> 00:10:39.316
所以在這裡我們可以說“props.count X = 10”

00:10:41.968 --> 00:10:45.053
和“count y =“，以及“size = 0.8”。

00:10:50.895 --> 00:10:56.460
保存，回到Blender，重新加載腳本，我們有了一個新按鈕

00:10:57.263 --> 00:11:03.543
在“大網格”上，將鼠標懸停在它上面時，您會看到它的那些參數值不同。

00:11:04.037 --> 00:11:05.062
刪除猴子，

00:11:06.396 --> 00:11:11.541
刪除後單擊“大網格”，當然會自動使用這些值。最重要的是，

00:11:11.541 --> 00:11:16.121
也可以製作一個小的網格，然後我們可以使用更多按鈕。

00:11:20.460 --> 00:11:22.030
所以對於小網格，

00:11:24.585 --> 00:11:30.285
讓我們將X設置為1，將Y設置為1，並將大小保留為默認值。

00:11:31.612 --> 00:11:33.502
所以我們在這裡不提。

00:11:35.562 --> 00:11:40.972
保存，回到Blender，重新加載，然後我們還有一個小網格。

00:11:43.745 --> 00:11:48.925
當然只有1。但是在Redo面板中，我們可以根據需要擴展它。

00:11:51.106 --> 00:11:53.221
現在，您還可以看到，

00:11:53.221 --> 00:11:59.646
能夠在該按鈕上設置文本的價值，因為它都是相同的運算符，但行為不同。

00:12:00.879 --> 00:12:02.889
現在，還有一件事。

00:12:02.889 --> 00:12:07.724
我不喜歡這些按鈕之間的間隔如何，因為它們基本上是

00:12:07.724 --> 00:12:14.599
做同樣的事情。他們正在創建一個猴子網格，並且應該將它們真正分組在一起。

00:12:14.599 --> 00:12:19.199
幸運的是，我們可以做到這一點通過將泥土放在圓柱中。

00:12:19.199 --> 00:12:25.144
我能聽到您的詢問，但是Sybren，他們已經在專欄中了，您在說什麼？

00:12:25.144 --> 00:12:30.144
好的，創建列的函數具有一些我們可以用來影響佈局的參數。

00:12:30.144 --> 00:12:32.899
因此，讓我們再次看一下代碼。

00:12:32.899 --> 00:12:37.469
現在，通過調用“self.layout.operator”繪製每個運算符，

00:12:37.469 --> 00:12:39.449
我們可以對其進行更改。

00:12:39.449 --> 00:12:41.159
我們可以先創建一列，

00:12:45.242 --> 00:12:49.062
然後，我們不是在“self.layout”上調用operator，

00:12:49.062 --> 00:12:51.307
而是在“col”上調用operator，

00:12:53.947 --> 00:12:57.627
保存代碼，返回Blender，重新加載腳本，

00:12:59.146 --> 00:13:02.246
您可以看到，它們已經被擠在一起了。

00:13:02.845 --> 00:13:06.600
我們可以走得更遠。在此處添加“align = true”，

00:13:10.537 --> 00:13:14.527
然後將它們完全按照我的意願將它們捏在一起。

00:13:15.627 --> 00:13:19.997
因此，在運算符旁邊，您還可以繪製屬性

00:13:19.997 --> 00:13:23.642
在面板上，這幾乎是您想要的任何屬性。

00:13:23.954 --> 00:13:29.724
因此，您無法使用它來將遍布Blender用戶界面的這些屬性組合在一起，

00:13:30.895 --> 00:13:32.195
但是你用很多

00:13:32.381 --> 00:13:39.811
因此，對於您的特定工作流程，
您可以將它們添加到自己的面板中，使您的生活更輕鬆。

00:13:39.811 --> 00:13:44.401
因此，讓我們採用兩個屬性，一個是Cycles的屬性。

00:13:44.412 --> 00:13:46.807
假設週期中的視圖樣本數。

00:13:48.262 --> 00:13:50.292
另外，我想有相對

00:13:51.385 --> 00:13:56.530
到當前選定的對象。因此，讓我們在那裡繪製視圖可見性。

00:13:56.530 --> 00:13:58.905
所以這裡的人就是其中之一

00:13:59.846 --> 00:14:05.246
視圖樣本數，我們要添加的另一個屬性是此處，禁用視圖。

00:14:05.512 --> 00:14:07.047
在轉到代碼之前，

00:14:07.406 --> 00:14:10.516
讓我們看看Blender已經告訴了我們什麼。

00:14:10.516 --> 00:14:15.736
您將鼠標懸停在視圖屬性上。在那裡，在工具提示的底部說

00:14:15.736 --> 00:14:18.611
“bpy data scenes.cycle.preview示例”

00:14:19.986 --> 00:14:21.866
這幾乎是我們想要的。

00:14:21.956 --> 00:14:27.306
但是，如果要使用它，我們將在腳本中硬編碼名稱“場景”。

00:14:27.306 --> 00:14:32.571
因此，如果我們重命名了“場景”，那麼我們的腳本已經損壞。

00:14:32.571 --> 00:14:36.976
而且，當您使用多個場景時，它也將不再起作用。

00:14:36.976 --> 00:14:39.156
因此，與其直接使用

00:14:39.156 --> 00:14:42.146
就目前而言，即使在這種情況下，

00:14:42.146 --> 00:14:47.161
它也可能起作用，但是我們將再次使用上下文，並獲得

00:14:47.161 --> 00:14:52.346
當前場景為“context.scene”。因此，我們要顯示的屬性實際上是

00:14:52.683 --> 00:14:55.348
“context.scene.cycle.preview示例”。

00:14:57.454 --> 00:15:01.579
現在，讓我們看一下代碼。讓我們添加另一列。

00:15:10.518 --> 00:15:13.533
然後我們“col.prop”為我們渲染該屬性。

00:15:15.788 --> 00:15:21.788
它至少需要兩個參數。第一個是包含屬性的東西，然後是名稱屬性。

00:15:23.692 --> 00:15:25.892
所以包含屬性的東西是

00:15:27.386 --> 00:15:30.336
“context.scene.cycle”一切到最後一點。

00:15:33.176 --> 00:15:35.231
然後名稱是“預覽樣本”。

00:15:37.486 --> 00:15:43.171
保存，返回Blender，重新加載腳本，然後在其中“預覽示例10”。

00:15:45.397 --> 00:15:50.202
所以我們可以改變這個，您可以在這裡看到它的變化不錯。

00:15:50.462 --> 00:15:55.512
這表明我們擁有正確的屬性。所以在這裡，您還可以添加

00:15:55.512 --> 00:16:00.332
這些文本和圖標參數。它們與運算符“col”的工作方式相同。

00:16:00.332 --> 00:16:03.182
因此，為了使視頻保持一點點，

00:16:03.182 --> 00:16:04.472
我會留給你玩。

00:16:05.960 --> 00:16:11.885
現在，讓我們看一下我們要添加的第二個屬性，即活動對象的屬性。

00:16:13.131 --> 00:16:17.016
我希望能夠控制視圖的可見性。那就是這個人

00:16:19.021 --> 00:16:22.736
那裡說“bpy.data對象suzanne.pi視圖”

00:16:23.641 --> 00:16:28.726
同樣，與場景一樣，我們不想僅針對Suzanne執行此操作。

00:16:29.121 --> 00:16:34.161
我們要這樣做對於當前活動對象，表示“context.active對象”。

00:16:35.441 --> 00:16:40.456
因此，我們要使用的屬性是“context.active object.hide視圖”

00:16:42.540 --> 00:16:45.130
讓我們只複製我們擁有的內容。

00:16:47.449 --> 00:16:51.084
將包含屬性的內容更改為“context.active對象”

00:16:56.110 --> 00:17:00.650
並將屬性名稱更改為“隱藏視圖”。這應該渲染該屬性。

00:17:01.024 --> 00:17:04.614
讓我們來看看。在Blender中，重新加載，

00:17:04.627 --> 00:17:06.862
還有我們想要擁有的屬性。

00:17:08.960 --> 00:17:11.835
現在，讓我們看看它是否有效。

00:17:12.594 --> 00:17:17.239
妳去 它正在工作，但是有點奇怪，因為它消失了，

00:17:18.836 --> 00:17:21.706
在這裡卻沒有。到底是怎麼回事？

00:17:21.706 --> 00:17:26.861
事實證明，當您隱藏對象時，該對像不再處於活動狀態。

00:17:26.861 --> 00:17:29.731
這意味著“context.active對象”將變為"無"，

00:17:29.933 --> 00:17:31.098
而不是Suzanne。

00:17:32.264 --> 00:17:34.264
"無"沒有屬性隱藏視圖。

00:17:35.126 --> 00:17:38.591
因此，我們的代碼實際上正在引起問題。

00:17:39.035 --> 00:17:42.850
看看我啟動Blender的終端。在這裡，你看，

00:17:42.923 --> 00:17:46.333
底部的錯誤消息是我從中啟動Blender的終端。

00:17:50.310 --> 00:17:53.590
它抱怨第82行的“monkey grid.py”

00:17:56.613 --> 00:18:00.208
文件是我們剛添加的“col”，並且顯示錯誤

00:18:00.658 --> 00:18:05.563
有一個參數的數據。因此，顯然，此參數稱為“數據”。

00:18:09.437 --> 00:18:11.847
"功能數據"不支援到"無"的分配。

00:18:12.991 --> 00:18:16.221
描述有點含糊，但與我剛才說的不符。

00:18:17.964 --> 00:18:21.794
活動對象為無(none)，並且您不能繪製none的屬性。

00:18:24.173 --> 00:18:29.538
因此，我們必須對此代碼添加一些保護，以使其始終有效。

00:18:32.360 --> 00:18:35.490
我們知道“context.active對象”可以變成無。

00:18:38.537 --> 00:18:42.292
因此，讓我們檢查一下。在這種情況下，

00:18:43.077 --> 00:18:44.922
我們只添加一個標籤。

00:18:47.280 --> 00:18:50.495
否則，我們將像以前一樣繪製屬性。

00:18:52.447 --> 00:18:56.372
讓我們看看它現在如何工作。重新加載腳本，

00:18:59.617 --> 00:19:05.282
就在那裡。它說“沒有活動對象”而不是出錯，所有代碼將繼續工作。

00:19:07.856 --> 00:19:13.501
您可以說這是一個愚蠢的按鈕，因為它只起作用一次，您將是對的。

00:19:13.659 --> 00:19:15.439
但我想有這個例子

00:19:15.841 --> 00:19:18.906
向您展示問題出在哪裡以及如何解決。

00:19:21.751 --> 00:19:27.736
這也是我覺得很重要的一件事的證明，這說明了為什麼不存在某些東西。

00:19:29.821 --> 00:19:37.796
因此，現在，我們繪製文本“無活動對象”，
而不是完全不繪製屬性，而只是默默地跳過它，

00:19:39.036 --> 00:19:43.366
向任何使用您的代碼的人表明為什麼該選項消失了。

00:19:46.092 --> 00:19:49.002
我認為這很重要。這就是為什麼

00:19:49.002 --> 00:19:53.322
無論如何我都想在這裡有這個例子，即使它沒有用。

00:19:53.536 --> 00:19:56.311
您現在知道瞭如何繪製自己的屬性，

00:19:56.354 --> 00:20:00.534
因此取決於您如何使其對您的特定工作流程有用。

00:20:00.628 --> 00:20:06.913
在結束本視頻之前，我想向您展示一件事，這是在菜單中添加運算子。

00:20:07.723 --> 00:20:13.093
鑑於我們到目前為止所看到的，這很容易。這就是為什麼

00:20:13.093 --> 00:20:19.108
我把它作為最後一步。讓我們將猴子網格運算符添加到網格添加菜單中。

00:20:19.108 --> 00:20:23.323
所以在這裡，我們有Add，Mesh，這會很好

00:20:23.323 --> 00:20:26.313
如果在“猴子”下面，有一個猴子網格。

00:20:26.313 --> 00:20:31.478
這意味著，我們必須將其添加到菜單中，並且有一個技巧。

00:20:31.478 --> 00:20:35.698
我給你看。但是首先，我們必須知道它是哪個菜單。

00:20:35.698 --> 00:20:40.423
您可以將鼠標懸停在“添加”上，它顯示“查看3DMT添加”，

00:20:40.423 --> 00:20:43.263
您可能已經猜到MT代表“菜單類型”。

00:20:45.362 --> 00:20:49.027
現在，問題是，子菜單不顯示此內容。

00:20:49.608 --> 00:20:52.103
看，您不知道什麼是網格。

00:20:52.287 --> 00:20:58.247
但是我們可以在Python控制台中環顧四周，看看是否仍然可以找到它。

00:20:58.486 --> 00:20:59.761
它是一種類型

00:21:00.238 --> 00:21:04.763
因此它是“bpy.types.View3D_MT”的一部分。

00:21:11.256 --> 00:21:14.226
讓我們看看是否可以找到一些東西。

00:21:18.483 --> 00:21:23.528
在那裡，“添加網格”。因此，這很有可能成為我們的菜單。

00:21:23.701 --> 00:21:28.611
在這裡調用它只會給出一個錯誤。因此，我們不要這樣做。

00:21:28.611 --> 00:21:32.926
但是至少，我們現在有了名稱“view 3D MT mesh add”

00:21:33.346 --> 00:21:38.271
在“bpy.types”中。讓我們複製此內容，然後轉到“代碼”。

00:21:39.374 --> 00:21:44.869
您可能已經猜到了，我們必須在寄存器和註銷函數中做一些事情，

00:21:45.628 --> 00:21:49.053
但是這次是完全不同的比目前為止所見。

00:21:50.024 --> 00:21:56.644
首先，我們必須創建自己的函數，該函數將繪製要添加到菜單的所有內容。

00:21:56.644 --> 00:21:58.439
這樣看起來像這樣。

00:22:01.626 --> 00:22:03.231
你能想到的名字

00:22:06.015 --> 00:22:10.745
再次，“自我，背景”。現在，讓我們在其中添加“

00:22:11.354 --> 00:22:15.354
pass”以使Python開心。 這個功能基本上會被稱為

00:22:16.559 --> 00:22:18.834
在該面板的“繪製”功能之後。

00:22:19.114 --> 00:22:23.929
因此，我們自己的面板具有帶有“self”和“context”的Draw函數，

00:22:24.903 --> 00:22:29.083
將使用相同的“self”和相同的“context”來調用此函數。

00:22:29.224 --> 00:22:33.509
因此，在我們的案例中，“自我”將引用該菜單。

00:22:33.509 --> 00:22:40.014
現在，讓我們註冊和註銷此功能。這是通過獲取“bpy.types.view 3D

00:22:40.964 --> 00:22:44.539
....”並說“
.append(mesh_add_menu_draw)”來完成的

00:22:47.683 --> 00:22:51.288
相反的是“刪除”。因此，如果取消註冊，

00:22:57.076 --> 00:23:01.546
將“刪除網格添加菜單繪製”。現在，在這裡放什麼？

00:23:02.713 --> 00:23:06.973
這與面板相同。我們可以稱之為“self.layout.operator”

00:23:15.605 --> 00:23:19.040
希望運算子的想法，並且這應該起作用。

00:23:19.942 --> 00:23:26.437
讓我們保存並返回Blender，重新加載腳本，
添加網格，然後這裡有“猴子網格”。

00:23:28.378 --> 00:23:29.658
它還沒有圖標。

00:23:30.430 --> 00:23:35.405
但是現在，您知道瞭如何添加一個，因此我將其留給您。

00:23:35.405 --> 00:23:42.215
現在，您已經了解瞭如何添加自己的面板，如何將自己的操作項添加到現有菜單。

00:23:42.215 --> 00:23:43.620
但最重要的是

00:23:43.620 --> 00:23:46.320
您已經看到瞭如何查看其他代碼。

00:23:46.320 --> 00:23:51.450
因此，當您看到有趣的事情時，想知道他們是如何做到的，

00:23:51.450 --> 00:23:57.830
您只需右鍵單擊“編輯源代碼”，
Blender中的大多數用戶界面元素都是用Python編寫的，

00:23:58.673 --> 00:24:02.573
然後就可以了。這就是“藝術家腳本”這一集的內容。

00:24:04.772 --> 00:24:10.687
如果您有任何疑問或意見，請留在下面的評論中，我們很快會再見。