当前位置:   article > 正文

Unity学习笔记--如何在Unity中把自己的代码打包成dll给别人使用?(纯保姆式教学,看完还不会,今晚八点,来沙城砍我)_unity项目怎么打包给其他人

unity项目怎么打包给其他人

前言

最近公司放年假了,没什么事做,所以来公司学习(蹭吃蹭喝ing)
突然记起来,秋招的时候,有面试官问我:如何在Unity中把自己写的代码给别人或者其他项目使用?
当时知道是利用C#的程序集来做,但是问我具体该怎么处理,我就不知道了,因为当时只有理论知识,没有实践过
所以这次来实践下。也将这个知识分享给大家~

Tips:本文章需要提前了解程序集,也就是Assembly的知识,如果不知道,可以先百度下。

背景

小A同学和小B同学都是程序员,现在小B同学需要一些工具类,但是他现在没有时间写,于是找到了小A,麻烦小A帮自己写几个工具。一个操作文件的工具,一个Json序列化反序列化工具。顺便也写一个简单的控制角色移动的脚本。

小A任务Get

  1. 操作文件的工具
  2. Json序列化反序列化工具
  3. 控制角色移动的脚本

步骤一

小A先打开了Unity,并且创建了一个空项目,比如叫做TestAssembly。
然后在Assets下生成了一个文件夹:Scripts,下面又新建了两个文件夹:3C和Tools。
在这里插入图片描述

步骤二

在Tools文件夹下新建FileTools和JsonTools脚本,并且编写代码
在这里插入图片描述

FileTools.cs

using System.IO;

namespace MyTools
{
    public static class FileTools
    {
        public static string ReadAllText(string file_path)
        {
            if (!File.Exists(file_path)) return null;
            return File.ReadAllText(file_path);
        }

        public static string[] ReadAllLines(string file_path)
        {
            if (!File.Exists(file_path)) return null;
            return File.ReadAllLines(file_path);
        }

    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

JsonTools.cs

using System.Collections;
using UnityEngine;

namespace MyTools
{
    public static class JsonTools
    {
        public static string ToJson(object obj)
        {
            return JsonUtility.ToJson(obj);
        }

        public static T FromJson<T>(string json)
        {
            return JsonUtility.FromJson<T>(json);
        }

        public static void FromJsonOverwrite(string json, object obj)
        {
            JsonUtility.FromJsonOverwrite(json, obj);
        }
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

步骤三

在3C文件夹下新建Move脚本,并且编写代码

Move.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace ThreeControl
{
    public class Move : MonoBehaviour
    {
        [SerializeField] private float speed = 2f;
        private void Update()
        {
            if (Input.GetKey(KeyCode.W))
            {
                transform.position += speed * transform.forward * Time.deltaTime;
            }
        }
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

步骤四(关键!!!)

现在是最关键的步骤了
我们在Tools文件夹下右键,点击Create下的AssemblyDefinition。并且命名为:ToolsAssembly
在这里插入图片描述
在这里插入图片描述

之后3C文件夹下同理,命名为:ThreeControl

在这里插入图片描述

步骤五

这个时候我们先右键Assets文件夹,点击Show in Explorer
在这里插入图片描述

之后进入 Library/ScriptAssemblies 文件夹下,发现多了两个dll文件:ThreeControl.dllToolsAssembly.dll
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤六

这个时候我们就可以换到小B的视角
新建一个Unity项目,比如叫做Test

然后在Assets文件夹下新建两个子文件夹:ScriptsPlugins
在这里插入图片描述

步骤七

这个时候我们可以把小A写的两个 dll 文件拿来了,在资源管理器下把ThreeControl.dllToolsAssembly.dll直接拖入到Test项目中的Plugins下。
在这里插入图片描述

我们发现ThreeControl里面有一个Move脚本,这就是我们小A写的脚本了。

步骤八

在Scripts文件夹下新建一个 Test.cs 脚本,并且编写代码,我们发现可以使用 FileToolsJsonTools
在这里插入图片描述

Test.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MyTools;

public class Test : MonoBehaviour
{
    Data data_template_1 = new Data(1, "Xiao A");
    Data data_template_2 = new Data(2, "Xiao B");
    private void Awake()
    {
        string data_1_json = JsonTools.ToJson(data_template_1);
        string data_2_json = JsonTools.ToJson(data_template_2);

        Data data_1 = JsonTools.FromJson<Data>(data_1_json);

        Data data_2 = new Data(0, "Xiao C");
        JsonTools.FromJsonOverwrite(data_2_json, data_2);

        print(data_1);
        print(data_2);

    }
}

public class Data
{
    public int age;
    public string name;

    public Data(int age_in, string name_in)
    {
        age = age_in;
        name = name_in;
    }
    
    public override string ToString()
    {
        return $"{age}, {name}";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

步骤九

Test.cs 拖到 Main Camera 下
在这里插入图片描述
运行游戏
在这里插入图片描述

步骤十

还记得我们之前写的 Move.cs
我们在Hierarchy下新建一个 Cube ,并且在 Hierarchy 下点击 Cube ,点击 AddComponent ,就可以找到 Move.cs 了,然后添加。

在这里插入图片描述
运行游戏,发现我们按下 W 键, Cube 可以朝前方移动
在这里插入图片描述

总结

  1. 先写好自己的代码
  2. 然后在对应位置生成Assembly Definition
  3. 找到生成的dll文件,并且发给其他人或上传到代码仓库
  4. 其他人下载dll文件并且拖入到Unity项目中,就可以使用了
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/88966
推荐阅读
相关标签
  

闽ICP备14008679号