Unity 編輯器熱更C# FastScriptReload

工具源碼:https://github.com/handzlikchris/FastScriptReload


介紹

  • 用于運行時修改C#后能快速重新編譯C#并生效,避免每次改C#,unity全部代碼重新編譯,耗時舊且需要重啟游戲。

使用

  • 需要手動調整AssetPipeline自動刷新模式,即改成運行時不要自動刷新資源,同時意味著:

    • 運行時改shader代碼不會及時生效,如果主要調試shader,還是要開運行時刷新。

    • 運行時window下改工程資源,unity不會刷新,比如外部新增一張圖,unity不會刷新顯示。

在這里插入圖片描述


原理

  1. FastScriptReloadManagerEditorApplication.update每幀檢查所有配置的*.cs文件

    1. System.IO.FileSystemWatcher.Changed 提供文件變化時事件
  2. 對變化的C#文件重新創建C#文件
    在這里插入圖片描述

    1. 對原來C#文件語法分析,對新增變量和方法另外封裝,對修改的變量不用另外處理。類似將新增的變量存到他一個臨時字典里,訪問就到他的字典里取。生成.SourceCodeCombined.cs文件
      在這里插入圖片描述
    • 生成.rsp文件,包含編譯需要的一些信息。
      在這里插入圖片描述

    • 使用.net命令和csc.dll工具編譯C#代碼為DLL文件。

  3. 安卓環境的話,這里會把dll轉成字節流發給手機,手機收到后下面流程一致。

  4. 使用System.Reflection.Assembly.LoadFrom加載DLL文件。

  5. AssemblyChangesLoader.DynamicallyUpdateMethodsForCreatedAssembly 對所有已存在的C#方法,重定向到新的C#方法:Memory.DetourMethod,即把舊的函數指針指向新的函數。


安卓環境測試

  • 原理和上面一致,只是多了層網絡收發,即把DLL的字節流發給手機,手機收到消息后加載程序集即可。

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

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

相關文章

MySQL InnoDB引擎 MVCC

MVCC(Multi-Version Concurrency Control)即多版本并發控制,是 MySQL 的 InnoDB 存儲引擎實現并發控制的一種重要技術。它在很多情況下避免了加鎖操作,從而提高了數據庫的并發性能。 一、原理 MVCC 的核心思想是通過保存數據在某…

從0到1:ArkTS實現鴻蒙策略模式全解析

策略模式初窺 策略模式(Strategy Pattern)是一種行為型設計模式,它定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的變化不會影響到使用算法的客戶端。在軟件開發中,策略模…

iOS AES/CBC/CTR加解密以及AES-CMAC

感覺iOS自帶的CryptoKit不好用,有個第三方庫CryptoSwift還不錯,好巧不巧,清理過Xcode緩存后死活下載不下來,當然也可以自己編譯個Framework,但是偏偏不想用第三方庫了,于是研究了一下,自帶的Com…

vue純靜態實現 視頻轉GIF 功能(附源碼)

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、實現后的效果二、使用步驟1.引入庫2.下載or復制出來js3. 前端實現 總結 前言 一天一個小demo 今天來一個vue純靜態實現 視頻轉GIF 功能 上一篇我們講到了…

因果機器學習(CausalML)前沿創新思路

結合了傳統因果推斷與機器學習的因果機器學習是目前AI領域的前沿研究方向,其核心優勢在于將因果邏輯融入數據驅動模型,從根本上解決了傳統方法的缺陷。因此,它也是突破傳統機器學習瓶頸的關鍵方向,不僅當下熱度高,在未…

【CubeMX+STM32】SD卡 U盤文件系統 USB+FATFS

本篇,將使用CubeMXKeil, 創建一個 USBTF卡存儲FatFS 的虛擬U盤讀寫工程。 目錄 一、簡述 二、CubeMX 配置 SDIO DMA FatFs USB 三、Keil 編輯代碼 四、實驗效果 串口助手,實現效果: U盤,識別效果: 一、簡述 上…

docker nginx 配置文件詳解

在平常的開發工作中,我們經常需要訪問靜態資源(圖片、HTML頁面等)、訪問文件目錄、部署項目時進行負載均衡等。那么我們就會使用到Nginx,nginx.conf 的配置至關重要。那么今天主要結合訪問靜態資源、負載均衡等總結下 nginx.conf …

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_atomic_cmp_set 函數

目錄 修正 執行 ./configure 命令時,輸出: checking for OS Linux 6.8.0-52-generic x86_64 checking for C compiler ... found using GNU C compiler gcc version: 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) 所以當前環境是 x86_64 于是在 src…

在 Go 中實現事件溯源:構建高效且可擴展的系統

事件溯源(Event Sourcing)是一種強大的架構模式,它通過記錄系統狀態的變化(事件)來重建系統的歷史狀態。這種模式特別適合需要高可擴展性、可追溯性和解耦的系統。在 Go 語言中,事件溯源可以通過一些簡單的…

大數據Orc文件生成與讀取

ORC(Optimized Row Columnar)是Hadoop生態系統中一種高效的列式存儲文件格式,其主要特性包括高效壓縮、快速讀取、以及能夠存儲結構化數據。本文將展示如何使用Java編寫代碼來生成和讀取ORC文件。 一、ORC文件介紹 ORC是一種為Hadoop生態系統優化的列式存儲格式,具有以下…

解讀 Flink Source 接口重構后的 KafkaSource

前言 Apache Kafka 和 Apache Flink 的結合,為構建實時流處理應用提供了一套強大的解決方案[1]。Kafka 作為高吞吐量、低延遲的分布式消息隊列,負責數據的采集、緩沖和分發;而 Flink 則是功能強大的流處理引擎,負責對數據進行實時…

【推理llm論文精讀】DeepSeek V3技術論文_精工見效果

先附上原始論文和效果對比https://arxiv.org/pdf/2412.19437 摘要 (Abstract) DeepSeek-V3是DeepSeek-AI團隊推出的最新力作,一個強大的混合專家(Mixture-of-Experts,MoE)語言模型。它擁有671B的總參數量,但每個tok…

如何使用Java語言在Idea和Android中分別建立服務端和客戶端實現局域網聊天

手把手教你用Java語言在Idea和Android中分別建立服務端和客戶端實現局域網聊天 目錄 文章目錄 手把手教你用**Java**語言在**Idea**和**Android**中分別建立**服務端**和**客戶端**實現局域網聊天**目錄**[toc]**基本實現****問題分析****服務端**Idea:結構預覽Server類代碼解…

java韓順平最新教程,Java工程師進階

簡介 HikariCP 是用于創建和管理連接,利用“池”的方式復用連接減少資源開銷,和其他數據源一樣,也具有連接數控制、連接可靠性測試、連接泄露控制、緩存語句等功能,另外,和 druid 一樣,HikariCP 也支持監控…

如何在 IDE 里使用 DeepSeek?

近期,阿里云百煉平臺重磅推出 DeepSeek-V3、DeepSeek-R1、DeepSeek-R1-Distill-Qwen-32B 等 6 款模型,進一步豐富其 AI 模型矩陣。與此同時,通義靈碼也緊跟步伐,全新上線模型選擇功能,支持基于百煉的 DeepSeek-V3 和 D…

vue中附件下載及打印功能

1.附件dom 注&#xff1a;fileList是由后臺返回的附件數組&#xff0c;數組中包含附件名稱fileName,附件地址url&#xff0c;附件id等信息 <el-form-item label"附件" style"width: 100% !important;" v-if"modelTypeborrowDetail"><d…

chromium-mojo

https://chromium.googlesource.com/chromium/src//refs/heads/main/mojo/README.md 相關類&#xff1a;https://zhuanlan.zhihu.com/p/426069459 Core:https://source.chromium.org/chromium/chromium/src//main:mojo/core/README.md;bpv1;bpt0 embedder:https://source.chr…

網絡安全技術復習總結

1|0第一章 概論 1.網絡安全發展階段包括四個階段&#xff1a;通信安全、計算機安全、網絡安全、網絡空間安全。 2.2017年6月1日&#xff0c;我國第一部全面規范網絡空間安全的基礎性法律《中華人民共和國網絡安全法》正式實施。 3.2021年 6月10日&#xff0c;《中華人民共和…

基于華為云鏡像加速器的Docker環境搭建與項目部署指南

基于華為云鏡像加速器的Docker環境搭建與項目部署指南 一、安裝Docker1.1 更新系統包1.2 安裝必要的依賴包1.3 移除原有的Docker倉庫配置(如果存在)1.4 添加華為云Docker倉庫1.5 安裝Docker CE1.6 啟動Docker服務1.7 驗證Docker是否安裝成功1.8 添加華為云鏡像加速器地址二、…

在SpringBoot服務器端采購上,如何選擇操作系統、Cpu、內存和帶寬、流量套餐

在Spring Boot服務器端采購時&#xff0c;選擇操作系統、CPU、內存、帶寬和流量套餐需根據應用需求、預算和性能要求綜合考慮。以下是具體建議&#xff1a; 1. 操作系統 Linux發行版&#xff08;如Ubuntu、CentOS&#xff09;&#xff1a;適合大多數Spring Boot應用&#xff…