パッチ
次にスクリプトを開きCube、次のように変更します
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
[Hotfix]
public class Cube : MonoBehaviour
{
private Rigidbody rigidbody;
// Start is called before the first frame update
void Start()
{
rigidbody = GetComponent<Rigidbody>();
}
[LuaCallCSharp]
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.W))
{
rigidbody.AddForce(Vector3.up*200);
}
}
}
最初に XLua 名前空間を導入し、次にホット アップデートされるコードに [Hotfix] タグを配置し、ホット アップデートされるコードに [LuaCallCSharp] タグを配置します。 - コードを更新しました。コードを保存して終了します。
この時点では C# コードが変更されているため、 2 つのステップ を実行して再コンパイルする必要があります。その後、Test.lua.txt ファイルを開いて内容を入力し、元の W キーを S キーに変更します。
local UnityEngine=CS.UnityEngine
xlua.hotfix(CS.Cube,'Update',function(self)--热更的脚本名称,需要热更的方法,热更的内容
--热乎代码块
if(UnityEngine.Input.GetKeyDown(UnityEngine.KeyCode.S)) then
self.rigidbody:AddForce(UnityEngine.Vector3.up*200);
end
end)
その後、コード ファイルを保存します。 Unity のコードに戻って実行すると、W キーを押したままにしても機能せず、S キーを押すと立方体が飛び上がってしまいます。
更新リソース、AB パッケージの作成
シーン内に新しい Sphere ゲーム オブジェクトを作成し、そのオブジェクトに Rigidbody コンポーネントを追加してから、Cube スクリプトをオブジェクトに追加します。
次に、Sphere ゲーム オブジェクトをプレハブに設定し、Sphere プレハブをクリックすると、[インスペクター] パネルの下部に表示されます。
これを次のように変更します。 < a i=4> 次に、 新しいフォルダーを作成し、その中に新しいスクリプトを作成し、AB パッケージをパッケージ化するコードを入力します。
EditorCreatAssetBundles
using UnityEditor;
using System.IO;
public class CreatAssetBundles
{
[MenuItem("Assets/Build AssetBundles")]
static void BuildAssetBundles()
{
string dir = "AssetBundles";
if(!Directory.Exists(dir))//如果该文件夹不存在
{
Directory.CreateDirectory(dir);
}
BuildPipeline.BuildAssetBundles(dir,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64);//填写对应的平台
}
}
[Assets] メニューの下に新しいオプションがあり、[Build AssetBundles] をクリックすると、コンソールで「スクリプトにコンパイラ エラーがあったため、プレーヤーの構築中にエラーが発生しました」というエラーが報告されることがわかります。これは、以下の Examples ファイル内の競合によって引き起こされます。 XLua ファイル。次に、フォルダーを削除します。
次に、 [生成されたコードをクリア] を選択し
、インジェクションを再生成し、[コードの生成] をクリックして、[エディターでのホットフィックス インジェクト] をクリックします。
[アセット] メニューで新しいオプションを見つけ、[アセットバンドルの構築] をクリックします。エラーは報告されていないことがわかりました。
プロジェクトファイルのルートディレクトリを開くと、中にsphere.unity3dのabファイルが生成されていることがわかりました。