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

这篇具有很好参考价值的文章主要介绍了Unity学习笔记--如何在Unity中把自己的代码打包成dll给别人使用?(纯保姆式教学,看完还不会,今晚八点,来沙城砍我)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

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

背景

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

小A任务Get

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

步骤一

小A先打开了Unity,并且创建了一个空项目,比如叫做TestAssembly。
然后在Assets下生成了一个文件夹:Scripts,下面又新建了两个文件夹:3C和Tools。
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

步骤二

在Tools文件夹下新建FileTools和JsonTools脚本,并且编写代码
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

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);
        }

    }

}

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);
        }
    }

}

步骤三

在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;
            }
        }
    }

}

步骤四(关键!!!)

现在是最关键的步骤了
我们在Tools文件夹下右键,点击Create下的AssemblyDefinition。并且命名为:ToolsAssembly
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

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

unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

步骤五

这个时候我们先右键Assets文件夹,点击Show in Explorer
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

之后进入 Library/ScriptAssemblies 文件夹下,发现多了两个dll文件:ThreeControl.dllToolsAssembly.dll
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

步骤六

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

然后在Assets文件夹下新建两个子文件夹:ScriptsPlugins
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

步骤七

这个时候我们可以把小A写的两个 dll 文件拿来了,在资源管理器下把ThreeControl.dllToolsAssembly.dll直接拖入到Test项目中的Plugins下。
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

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

步骤八

在Scripts文件夹下新建一个 Test.cs 脚本,并且编写代码,我们发现可以使用 FileToolsJsonTools
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

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}";
    }
}

步骤九

Test.cs 拖到 Main Camera 下
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎
运行游戏
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎

步骤十

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

unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎
运行游戏,发现我们按下 W 键, Cube 可以朝前方移动
unity项目怎么打包给其他人,Unity学习笔记,unity,学习,游戏引擎文章来源地址https://www.toymoban.com/news/detail-801778.html

总结

  1. 先写好自己的代码
  2. 然后在对应位置生成Assembly Definition
  3. 找到生成的dll文件,并且发给其他人或上传到代码仓库
  4. 其他人下载dll文件并且拖入到Unity项目中,就可以使用了

到了这里,关于Unity学习笔记--如何在Unity中把自己的代码打包成dll给别人使用?(纯保姆式教学,看完还不会,今晚八点,来沙城砍我)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity笔记:第三人称Starter Asset代码学习

    自己看了几篇文章和视频,写了个人物移动脚本,有很多瑕疵。这个时候研究一下优秀的代码总是好的,Unity官方有Third Person Starter Asset可供研究,其官方商店页面是:Starter Assets - ThirdPerson | Updates in new CharacterController package 官方B站介绍视频是:Bilibili - [Unity教程]-Starter Asset

    2024年02月22日
    浏览(40)
  • 【unity学习笔记-如何给动态的人物添加碰撞体】

    前景提要 如题,项目中想实现和人物进行简单的互动,比如点击他的手臂的时候他会播放手臂的动作,点击脚的时候播放预设的和脚有关的动画 之前我的实现方式是十分暴力的在人物模型中对应的部位添加一个子物体,给子物体添加正方体/圆体这种规则的碰撞体,然后因为他是在

    2023年04月08日
    浏览(64)
  • Unity如何引用dll

    这里介绍两种方法,针对不同的需求,方法一针对已知明确的dll,而且量少依赖少的dll;方法二通用推荐;方法三,通用(不推荐); 将所需要的文件夹放置到Unity项目的Plugins文件夹下 例如我这边有一个onnx的dll库,直接拖入到plugins文件夹下即可 然后我们双击任何一个脚本进入

    2024年02月07日
    浏览(50)
  • setup.py方式打包自己的python代码并可以用pip install安装

    注意setup.py文件和MANIFEST.in文件需要放在和你需要打包的目录同一级下 ,例如我这里需要打包的就是webconsole文件夹(这里webconsole文件夹指的是业务代码文件夹也就是我下图圈出来的文件夹,而不是最外层那个webconsole项目目录文件夹,因为我这里起了相同的文件夹名称,怕各

    2024年04月26日
    浏览(33)
  • Unity学习笔记--如何用代码Copy Component并且Paste到其他游戏对象上?

    最近需要在编辑器模式下,用代码实现复制一个组件并且移动到另一个游戏对象上 简单来说就是剪切 通过查询Unity API可以了解到 UnityEditorInternal.ComponentUtility.CopyComponent 。 比如我们想把A游戏对象上的 Rigidbody 组件移动到B游戏对象上 有时候,我们可能需要把一个游戏对象上的

    2024年02月15日
    浏览(31)
  • 逆向解Unity打包的代码和资源

            我之前说过用Unity打包发布apk包的时候要非常小心,加密和防逆向篡改,因为unity游戏太容易篡改或逆向出来了,所以代码混淆、加密等工作还是十分重要的。         这里我揪出来一个已经上线的棋牌游戏,根据解压缩apk后我发现有assetsbinDataManaged这个目录,

    2024年02月03日
    浏览(28)
  • Unity学习笔记--如何优雅简便地利用对象池生成游戏对象(进阶版)LRU + 对象池

    之前写过一篇关于对象池的文章,现在来看写的并不是很好,所以来考虑优化下。 现在来看一年前写的代码,越看越不能入目hhh Unity学习笔记–如何优雅简便地利用对象池生成游戏对象 Unity学习笔记–使用 C# 开发一个 LRU PoolManager.cs BaseFactory.cs 创建 Factory 创建 object 创建 Bu

    2024年02月13日
    浏览(30)
  • 无ios开发者账号如何打包自己的ios 版本app(需要有苹果手机或者mac电脑)

    1.注册苹果账号 https://developer.apple.com/account 2.登录开发者中心 出现协议弹框 同意即可 3.下载Appuploader http://www.applicationloader.net/ 4.打开压缩包内exe文件 5.登录刚刚申请的苹果账号 ,要选未支付688(正式的开发者账号每年要支付688) 6.进入证书管理 7.进入证书管理,创建证书,

    2024年02月09日
    浏览(37)
  • Python如何调用DLL库?——实例详解及代码

    Python如何调用DLL库?——实例详解及代码 在Python中,您可以通过调用DLL库完成各种功能,来满足不同的需求。调用DLL库意味着从外部获取了一些函数,可以在Python中直接调用这些函数,这对于Python程序员来说是一种非常有用的技能。本文将为大家介绍如何在Python中调用DLL库。

    2024年02月06日
    浏览(33)
  • Vison Pro/Unity/Poly Spatial开发笔记整理【一】(DEMO打包)

    软硬件要求 Apple Silicon Mac for development - 具备M1/M2/M3的Mac Unity 2022 LTS(2022.3.11f1 and higher) - Unity Pro会员使用 Xcode 15.1 beta 1 visionOS beta4(21N5259k) - SDK Unity Pro LTS 另外需要强调一下:不同于打包iOS的应用,Windows电脑没有办法安装Vision Pro的Build环境 参考文档/视频 Unity PolySpatial - 开发 v

    2024年04月17日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包