當前位置:首頁 » 操作系統 » unityc源碼

unityc源碼

發布時間: 2023-08-22 20:20:11

A. unity打包ios後能看到源碼

首先我們要先搞清楚nity全自動打包的重要步驟。

1.自動生成xcode工程。

2.自動生成.ipa和dsym文件。

3.上傳appstore(本篇略)

首先我們在做渠道包時,一般每個渠道都有自己一些特殊的需求,比如 游戲名子 、游戲圖標、SDK、等等。那麼我在在做自動化打包的工具時,需要把渠道作為參數傳入shell腳本中,如下圖所示開始運行我的shell腳本,這里只接收一個參數,其實就是告訴腳本你要打什麼渠道的包,這里我寫91。

腳本比較簡單,原理就是先生成xcode工程,然後接著生成.ipa 。 代碼中的$1 就表示我傳入的第一個參數 91字元串。

UNITY_PATH :就是unity安裝的路徑, 如果你不改Unity的名子Mac上就會是這個路徑。

PEOJECT_PATH:這個是你游戲工程的路徑。。就是 Assets/上一級的哪個路徑。。

BUILD_IOS_PATH:這個是我打包生成ipa的一個腳本,後面我會細說我目前把這個腳本放在我的游戲工程里, 所以他是一個相對路徑。

XCODE_PATH:這個是生成xcode工程的路徑,因為可能有很多渠道,所以我就傳入的91字元串作為文件名。

B. Unity打包好的游戲可以反編譯得到源碼和資源嗎

可以,80%以上的Unity游戲都根本沒做代碼混淆和資源加密,簡直都對不起反編譯三個字。直接拿來用就可以。
工具的話,看代碼用reflector。
資源就是打好包的assetbundle,直接用就好了

C. Unity3D這款游戲引擎軟體的源碼是開源的嗎

Unity3D是不開源的。

相關介紹:

Unity類似於Director、Blender game engine、Virtools 或 Torque Game Builder等利用交互的圖型化開發環境為首要方式的軟體。

開放源碼軟體通常是有right的,它的許可證可能包含這樣一些限制: 蓄意的保護它的開放源碼狀態,著者身份的公告,或者開發的控制。「開放源碼」正在被公眾利益軟體組織注冊為認證標記,這也是創立正式的開放源碼定義的一種手段。

(3)unityc源碼擴展閱讀

開放源碼軟體主要被散布在全世界的編程者隊伍所開發,但是同時一些大學,政府機構承包商,協會和商業公司也開發它。源代碼開放是信息技術發展引發網路革命所帶來的面向未來以開放創新、共同創新為特點的、以人為本的創新2.0模式在軟體行業的典型體現和生動註解。

共享軟體。允許他人自由拷貝並收取合理注冊費用。使用者可在軟體規定的試用期限內免費試用,再決定注冊購買與否。大部分共享版軟體都有功能和時間限制,試用期通常分為7天、21天、30天不等。而有的共享軟體還限制用戶只能安裝一次,若刪除後重新安裝將會失效。像Winzip、ACDSee等軟體就是共享軟體。

D. 在unity中怎麼運行.cs文件

一.准備工作:

調試工具
1.visual studio 工具配置:Edit - Preferences - External Tools
2.c#項目文件說明:詳細鏈接

新創建的unity項目並沒有這些文件,當在unity編輯器中,打開cs文件時或者點擊Assets-open c# project時,就會啟動visual studio工具,會自動創建 sln(solusion 解決方案) 和csproj項目文件。
其中的firstpass表示先編譯,Editor表示放在Editor文件夾下的腳本。

根據官方的解釋,它們的編譯順序如下:
(1)Assembly-CSharp-filepass.csproj:所有在Standard Assets、Pro Standard Assets或者Plugins文件夾中的腳本;
(2)Assembly-CSharp-Editor-filepass.csproj:所有在Standard Assets/Editor、Pro Standard Assets/Editor或者Plugins/Editor文件夾中的腳本產生工程文件;
(3)Assembly-CSharp.csproj:所有在Assets/Editor外面的,並且不在(1),(2)中的腳本文件(一般這些腳本就是我們自己寫的非編輯器擴展腳本)會產生工程文件;
(4)Assembly-CSharp-Editor-vs.csproj:所有在Assets/Editor中的腳本產生一個工程文件。
登錄後復制
他們是分別對應項目中4個不同代碼存放位置的C#工程,被編譯成dll後位於主目錄下的\Library\ScriptAssemblies\

Assets目錄

1、Resources
存放資源,Resources的所有內容都會打包到發布版中,資源會被壓縮,使用Resources.Load()進行載入。

2、Editor
存放編輯器的擴展腳本,可以寫一些輔助工具。Editor下的資源不會被打包到發布包中。

3、Plugins
存放插件,比如spine,tween,Plugins/Android、Plugins/iOS

E. unity shader里 dot(lightCoord, lightCoord).rr

#ifdef USING_DIRECTIONAL_LIGHT
fixed atten = 1.0;
#else
float3 lightCoord = mul(_LightMatrix0, float4(i.worldPos, 1)).xyz;
fixed atten = tex2D(_LightTexture0, dot(lightCoord, lightCoord).rr).UNITY_ATTEN_CHANNEL;
#endif

  • _LightMatrix0:這個變數在書的P184頁表格和官方文檔中均有說明,它在內置的AutoLight.cginc文件中的特定宏下被定義,可以用於把點從世界空間變換到該光源的局部空間下。因此,上面代碼第一句「mul(_LightMatrix0, float4(i.worldPos, 1)).xyz」就是把頂點坐標變換到光源空間下的坐標,這點在書中也有解釋。

  • _LightTexture0:和_LightMatrix0類似的,也是在內置的AutoLight.cginc文件中的特定宏下被定義,緊跟_LightMatrix0的定義。它是一張包含了光源衰減信息的衰減紋理,我們可以用第一句代碼得到的坐標進一步處理得到衰減紋理的采樣坐標。由於Unity沒有官方解釋_LightMatrix0具體的數值范圍含義,我們可以推測得到(推測方法可以是利用假彩色一節的方法來把這個變數當成顏色輸出)_LightMatrix0得到的坐標模範圍會是[0, 1],即與光源重合處是(0, 0, 0), 在光源范圍的邊界處模值為1。而 dot(lightCoord, lightCoord).rr一句,首先是由點積得到光源的距離平方,這是一個標量,我們對這個變數進行.rr操作相當於構建了一個二維矢量,這個二維矢量每個分量的值都是這個標量值,由此得到一個二維采樣坐標。這個操作是shader中常見的swizzling操作,Cg的官網上也有說明。我們隨後使用這個二維坐標對光照衰減紋理_LightTexture0進行采樣,得到衰減值。關於_LightTexture0後面會系統講。

  • 這段代碼不夠規范:書上有說這一節的代碼不能直接用到項目里,僅僅是用來闡述原理,但如果你想用這段代碼直接發布項目的話,是需要修改的,因為當時寫的時候不夠規范。原因是這段代碼的keyword判斷條件有問題,導致_LightTexture0或_LightMatrix0可能並沒有被定義。我們可以將原來的代碼替換成下面的代碼(新的代碼也已經push到了github上):

    #ifdef USING_DIRECTIONAL_LIGHT
    fixed atten = 1.0;
    #else
    #if defined (POINT)
    // 把點坐標轉換到點光源的坐標空間中,_LightMatrix0由引擎代碼計算後傳遞到shader中,這里包含了對點光源范圍的計算,具體可參考Unity引擎源碼。經過_LightMatrix0變換後,在點光源中心處lightCoord為(0, 0, 0),在點光源的范圍邊緣處lightCoord模為1
    float3 lightCoord = mul(_LightMatrix0, float4(i.worldPos, 1)).xyz;
    // 使用點到光源中心距離的平方dot(lightCoord, lightCoord)構成二維采樣坐標,對衰減紋理_LightTexture0采樣。_LightTexture0紋理具體長什麼樣可以看後面的內容
    // UNITY_ATTEN_CHANNEL是衰減值所在的紋理通道,可以在內置的HLSLSupport.cginc文件中查看。一般PC和主機平台的話UNITY_ATTEN_CHANNEL是r通道,移動平台的話是a通道
    fixed atten = tex2D(_LightTexture0, dot(lightCoord, lightCoord).rr).UNITY_ATTEN_CHANNEL;
    #elif defined (SPOT)
    // 把點坐標轉換到聚光燈的坐標空間中,_LightMatrix0由引擎代碼計算後傳遞到shader中,這裡麵包含了對聚光燈的范圍、角度的計算,具體可參考Unity引擎源碼。經過_LightMatrix0變換後,在聚光燈光源中心處或聚光燈范圍外的lightCoord為(0, 0, 0),在點光源的范圍邊緣處lightCoord模為1
    float4 lightCoord = mul(_LightMatrix0, float4(i.worldPos, 1));
    // 與點光源不同,由於聚光燈有更多的角度等要求,因此為了得到衰減值,除了需要對衰減紋理采樣外,還需要對聚光燈的范圍、張角和方向進行判斷
    // 此時衰減紋理存儲到了_LightTextureB0中,這張紋理和點光源中的_LightTexture0是等價的
    // 聚光燈的_LightTexture0存儲的不再是基於距離的衰減紋理,而是一張基於張角范圍的衰減紋理
    fixed atten = (lightCoord.z > 0) * tex2D(_LightTexture0, lightCoord.xy / lightCoord.w + 0.5).w * tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).UNITY_ATTEN_CHANNEL;
    #else
    fixed atten = 1.0;
    #endif
    #endif

    上面更加精確地判斷了keyword條件,保證只在正確的時候執行訪問衰減紋理的代碼。_LightTexture0和_LightMatrix0隻在某些條件下會被定義,例如在開啟了POINT、SPOT、POINT_COOKIE、DIRECTIONAL_COOKIE等,具體我們可以在AutoLight.cginc裡面找到。但因為原來的代碼里沒有進行嚴格判斷,在發布的時候由於Unity會嚴格編譯Unity Shader根據不同的keyword生成對應的shader program,此時它就會發現我們的錯誤了。

F. unity3d 源碼文件在哪個文件夾

查看源碼的步驟:對著源碼所在的文件夾右鍵,然後選擇Show in Explorer。如圖

G. unity源代碼怎麼導入

將源代碼導入Assets目錄後,
unity引擎會出現以下報錯:

解決辦法:
在 unity項目Assets目錄中創建smcs.rsp文件,內容為-unsafe,其作用為可編譯不安全代碼。

熱點內容
safemon是什麼文件夾 發布:2025-03-09 07:47:03 瀏覽:818
ipa反編譯源碼 發布:2025-03-09 07:41:06 瀏覽:294
電腦xp密碼忘了怎麼辦 發布:2025-03-09 07:38:18 瀏覽:827
聯想雲控制台只能一個伺服器嗎 發布:2025-03-09 07:38:16 瀏覽:583
大學編程系 發布:2025-03-09 07:34:13 瀏覽:774
把伺服器ip地址轉換成域名 發布:2025-03-09 07:32:56 瀏覽:448
pt和pe代表什麼配置 發布:2025-03-09 07:32:21 瀏覽:578
怎麼配置生長素的濃度 發布:2025-03-09 07:26:35 瀏覽:15
安卓鎖屏照的照片保存在哪裡 發布:2025-03-09 07:11:17 瀏覽:244
紅米找回賬號密碼怎麼辦 發布:2025-03-09 07:05:46 瀏覽:484