Unity程序集

對于Unity的程序集,具體內容可以參考Unity官方文檔,程序集定義

- 預定義程序集

比如Unity的默認程序集,Assembly-CSharp.dll,還有其他的比如 Assembly-CSharp-Editor.dll,Assembly-CSharp-firstpass.dll
在這里插入圖片描述
在這里插入圖片描述
沒有指定或不在特殊文件夾內的腳本都屬于這個程序集

- 特殊文件夾

1. Editor

在Editor文件夾下的腳本,默認會屬于Assembly-CSharp-Editor.dll程序集,除非自定義程序集
在這里插入圖片描述

2. Plugins

在Plugins文件夾下的腳本默認屬于Assembly-CSharp-firstpass.dll程序集,除非自定義程序集
在這里插入圖片描述

- 程序集定義引用,Assembly Definition Reference

即Assembly Definition Reference
在這里插入圖片描述
官方解釋為
在這里插入圖片描述
什么意思呢?試驗一下
在這里插入圖片描述
此時腳本默認屬于Assembly-CSharp-Editor.dll

接下來創建一個Assembly Definition Reference,并且指定程序集引用為UniTask
在這里插入圖片描述
在這里插入圖片描述
發現此時腳本的所屬程序集變成了UniTask.dll,所以這里的意思就是Assembly Definition Reference會修改原來腳本所屬的程序集

而當腳本已經屬于一個自定義程序集時,就不能再指定一個Assembly Definition Reference了
在這里插入圖片描述
此時腳本屬于EditorTest.dll程序集
在這里插入圖片描述
報錯的意思是“包含多個程序集定義文件”

- 引用其他程序集,程序集中的Assembly Definition References

在這里插入圖片描述
在這里引用這些程序集后,程序集所屬的腳本就可以使用這些程序集里的Public類或者方法了,但是不能使用internal的類或者方法,并且要注意,程序集之間不能通過這個形成循環引用,勾選GUIDs的意思是對于程序集定義引用,使用GUID而非程序集名稱。這樣一來,被引用的程序集可以重命名,而無需更新引用。 ,即這些被引用的程序集可以重命名,但因為使用的是他們的GUID,所以重命名不影響引用

- Override References

在這里插入圖片描述
這里的意思是,當不勾選Override References時,當前自定義程序集會引用所有的預編譯程序集,勾選后,只會引用指定的預編譯程序集,和Assembly Definition References 的區別在于這里指定的是對預編譯程序集的引用
在這里插入圖片描述
在這里插入圖片描述

此時Main程序集沒有勾選Override References,Unity.VisualScripting可以正確引用

當勾選,沒有指定時
在這里插入圖片描述
在這里插入圖片描述
引用報錯

當勾選后,在列表中引用相關程序集
在這里插入圖片描述
報錯消失了

- Auto Referenced

指定預定義的程序集是否應引用此項目程序集,即類似Assembly-CSharp.dll這樣的預編譯程序集是否會引用當前這個自定義程序集,默認勾選的話,預編譯程序集是會自動引用當前自定義程序集的
在這里插入圖片描述
在使用HybridCLR時,有一個注意項是不要將熱更程序集的Auto Referenced選項否選,否則會出現打包失敗的情況

- Define Constraints 有條件地包含一個程序集

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
即需要同時滿足所有的符號表示的條件,這個程序集才會被編譯,然后這里的符號可以是Project Setting中的Scripting Define Symbols定義的符號
在這里插入圖片描述
可以是Unity定義的符號,比如UNITY_EDITOR之類的
在這里插入圖片描述
還有 Version Defines 定義的符號
在這里插入圖片描述

- Version Defines 版本定義

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
比如,我想要區分這個程序集中的代碼在不同yooasset版本的時候的處理,那么可以這樣
在這里插入圖片描述

然后就可以在代碼中引用這個符號,表示當yooasset的版本 >= 1.5.0時的處理
在這里插入圖片描述
當前工程中的yooasset版本是2.3.x的版本,運行
在這里插入圖片描述
走到了YOOASSET_NEW中

現在去掉這個定義
在這里插入圖片描述
在這里插入圖片描述
走到了#else中

那么,它和Project Setting中的Scripting Define Symbols有什么區別呢?
在這里插入圖片描述
簡單來說,就是Scripting Define Symbols定義的符號會影響到項目中所有的程序集,但是Version Defines 中定義的符號只會影響到當前定義的這個程序集

還有注意,如果Expression這里的版本范圍表達式不填的話,經過實測,這個符號會一直生效

比如
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

- 設置程序集Internal成員的暴露

在這里插入圖片描述
在這里插入圖片描述
即當前程序集的Internal成員會暴露給這里面自定義名稱的程序集,比如UniTask.Linq,UniTask.Addressables程序集現在可以使用這個腳本所在程序集的Internal成員

比如
在這里插入圖片描述
新建一個Test程序集合Test腳本
在這里插入圖片描述
此時InternalsVisibleTo腳本屬于Main程序集
在這里插入圖片描述
BuildTest屬于Main程序集
在這里插入圖片描述
這里的意思就是Main程序集的Internal成員會暴露給Test程序集
在這里插入圖片描述
在這里插入圖片描述
可以看到此時Test腳本能夠順利調用到BuildTest腳本的Internal的成員PrintTest

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

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

相關文章

【架構藝術】平衡技術架構設計和預期的產品形態

近期筆者因為工作原因,開始啟動team內部部分技術項目的重構。在事情啟動的過程中,內部對于這件事情的定性和投入有一些爭論,但最終還是敲定了下來。其中部分爭論點主要在于產品形態,因為事情涉及到跨部門合作,所以產品…

React和原生事件的區別

一、核心差異對比表 維度原生事件React 事件綁定語法HTML 屬性(onclick)或 DOM API(addEventListener)JSX 中使用駝峰式屬性(onClick)綁定位置直接綁定到具體 DOM 元素統一委托到根節點(React …

大模型-modelscope下載和使用chatglm3-6b模型

前言 由于官方chatglm3-6b大模型文件下載比較慢,找到國內modelscope代替方案 1.SDK下載 pip install modelscope2.下載大模型文件 ?方法1:通過pip下載 1.安裝 setuptools 在當前使用的 Python 環境中安裝 setuptools pip install setuptools2.通過如下命令安…

【unity游戲開發——編輯器擴展】AssetDatabase公共類在編輯器環境中管理和操作項目中的資源

注意:考慮到編輯器擴展的內容比較多,我將編輯器擴展的內容分開,并全部整合放在【unity游戲開發——編輯器擴展】專欄里,感興趣的小伙伴可以前往逐一查看學習。 文章目錄 前言一、AssetDatabase常用API1、創建資源1.1 API1.2 示例 …

css實現文字漸變

在前端開發中&#xff0c;給文字設置漸變色是完全可以實現的&#xff0c;常用的方式是結合 CSS 的 background、-webkit-background-clip 和 -webkit-text-fill-color 屬性。下面是一個常見的實現方法&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> …

WSL 開發環境搭建指南:Java 11 + 中間件全家桶安裝實戰

在WSL&#xff08;Windows Subsystem for Linux&#xff09;環境下一站式安裝開發常用工具&#xff0c;能極大提升工作效率。接下來我將分步為你介紹如何在WSL中安裝Java 11、Maven、Redis、MySQL、Nacos、RabbitMQ、RocketMQ、Elasticsearch&#xff08;ES&#xff09;和Node.…

vue3: baidusubway using typescript

項目結構&#xff1a; <!--npm install -D tailwindcss-3d BaiduSubwayMap.vue npm install -D tailwindcss postcss autoprefixer--> <template><div class"relative w-full h-screen"><!-- 地圖容器 --><div id"subway-container…

【iptables防火墻】-- URL過濾 (Hexstring、IP、DoT和DoH)

在路由器中使用iptables工具對URL地址進行過濾涉及到如下幾個方面&#xff0c;hexstring、ip、DoT和DoH。 以過濾www.baidu.com為例 1、DNS阻斷 m string --hex-string是iptables中一個以?十六進制格式?定義要匹配的二進制特征并且支持混合明文和二進制數據的模塊。由于DN…

mysql-本地編譯 MySQL 源碼

完全理解你的感受&#xff01;MySQL 源碼本地調試確實是一個“坑多”的過程&#xff0c;尤其是當你第一次嘗試從源碼構建和調試 MySQL 時。但別擔心&#xff0c;我來一步步幫你梳理整個流程&#xff0c;并提供一個詳細、可操作的指南&#xff0c;讓你可以順利跑起來 MySQL 源碼…

深入理解 shared_ptr 與 enable_shared_from_this

在 C++ 的智能指針體系中,std::shared_ptr 是一個非常重要的工具,它通過引用計數機制幫助我們管理動態分配的對象生命周期,避免內存泄漏。然而,在某些情況下,我們可能需要從一個對象內部獲取指向自身的 shared_ptr,這時候就需要使用 std::enable_shared_from_this 這個輔…

通義開源視覺感知多模態 RAG 推理框架 VRAG-RL:開啟多模態推理新時代

通義實驗室的自然語言智能團隊&#xff0c;憑借深厚的技術積累與創新精神&#xff0c;成功研發并開源了視覺感知多模態 RAG 推理框架 VRAG-RL&#xff0c;為 AI 在復雜視覺信息處理領域帶來了重大突破。 傳統 RAG 方法的局限 傳統的檢索增強型生成&#xff08;RAG&#xff0…

【iOS】方法交換

方法交換 method-swizzling是什么相關API方法交換的風險method-swizzling使用過程中的一次性問題在當前類中進行方法交換類方法的方法交換 方法交換的應用 method-swizzling是什么 method-swizzling的含義是方法交換&#xff0c;他的主要作用是在運行的時候將一個方法的實現替…

Python - 爬蟲;Scrapy框架之插件Extensions(四)

閱讀本文前先參考 https://blog.csdn.net/MinggeQingchun/article/details/145904572 在 Scrapy 中&#xff0c;擴展&#xff08;Extensions&#xff09;是一種插件&#xff0c;允許你添加額外的功能到你的爬蟲項目中。這些擴展可以在項目的不同階段執行&#xff0c;比如啟動…

95套HTML高端大數據可視化大屏源碼分享

概述?? 在大數據時代&#xff0c;數據可視化已成為各行各業的重要需求。這里精心整理了95套高端HTML大數據可視化大屏源碼&#xff0c;這些資源采用現代化設計風格&#xff0c;可幫助開發者快速構建專業的數據展示界面。 ??主要內容?? ??1. 設計風格與特點?? 采用…

redis未授權(CVE-2022-0543)

概述 Redis 默認綁定在 0.0.0.0:6379&#xff0c;在未配置防火墻或訪問控制的情況下會將服務暴露在公網上。若未設置訪問密碼&#xff08;默認通常為空&#xff09;&#xff0c;攻擊者可直接未授權訪問 Redis。利用 Redis 提供的 CONFIG 命令&#xff0c;攻擊者可修改配置并將…

(面試)OkHttp實現原理

OkHttp 是一個高效的 HTTP 客戶端&#xff0c;被廣泛應用于 Android 和 Java 應用中。它提供了許多強大的特性&#xff0c;例如連接池、透明的 GZIP 壓縮、HTTP/2 支持等。理解 OkHttp 的實現原理有助于更好地使用和調試它。 以下是 OkHttp 的一些核心實現原理&#xff1a; 1…

Netty 實戰篇:構建簡易注冊中心,實現服務發現與調用路由

本文將為前面構建的輕量級 RPC 框架添加“服務注冊與發現”功能&#xff0c;支持多服務節點動態上線、自動感知與調用路由&#xff0c;為構建真正可擴展的分布式系統打好基礎。 一、背景&#xff1a;為什么需要注冊中心&#xff1f; 如果每個客戶端都硬編碼連接某個 IP/端口的…

c++之分支

深入理解 C 分支結構&#xff1a;從基礎到實戰 在 C 編程的世界里&#xff0c;分支結構是控制程序流程的重要手段&#xff0c;它賦予程序 “思考” 和 “選擇” 的能力&#xff0c;讓程序能夠根據不同的條件執行不同的代碼塊。本文將帶大家深入探索 C 分支結構&#xff0c;結合…

LLMs之MCP:如何使用 Gradio 構建 MCP 服務器

LLMs之MCP&#xff1a;如何使用 Gradio 構建 MCP 服務器 導讀&#xff1a;本文詳細介紹了如何使用Gradio構建MCP服務器&#xff0c;包括前提條件、構建方法、關鍵特性和相關資源。通過一個簡單的字母計數示例&#xff0c;演示了如何將Gradio應用轉換為LLM可以使用的工具。Gradi…

ubuntu20.04.5-arm64版安裝robotjs

ubuntu20.04.5arm上使用robotjs #ssh&#xff0c;可選 sudo apt update sudo apt install openssh-server sudo systemctl status ssh sudo systemctl enable ssh sudo systemctl enable --now ssh #防火墻相關&#xff0c;可選 sudo ufw allow ssh sudo ufw allow 2222/tc…