• 注册
  • 攻略教程 攻略教程 关注:712 内容:221
    DLL

    【教程】轻量化脚本定制你的主菜单背景音乐

  • 查看作者
  • 打赏作者
  • 当前位置: 七日杀中文网 > 攻略教程 > 正文
  • 攻略教程
  • 大版主
    LV.4
    爱我走心

    废话不多说,直接上代码

    using System.Reflection;
    using HarmonyLib;
    using UnityEngine;
    using estudio.Common;
    namespace estudio
    {
        public class H_BackgroundMenuClipRepair
        {
                //表示要进行补丁的目标成员
            [HarmonyPatch(typeof(BackgroundMusicMono), "Start")]
            public class BackgroundMusicMono_Start_Patch
            {
                    //此属性为AudioClip的加载路径
                private static string MyPath
                {
                    get
                    {
                            //Assembly.GetExecutingAssembly()可以获取当前运行的程序集,通过调用Location属性可以获取到它的位置
                        string dllInThat = Assembly.GetExecutingAssembly().Location;
                        //拿到DLL路径后进行路径字符串截取,不懂得可以去查看相关API,大概作用就是截取路径字符串让它不包含DLL名称及扩展名(也就是Mod根路径)
                        string rootLocation = dllInThat.Substring(0, dllInThat.LastIndexOf("xxx.dll") - 1);
                        //属性的返回值就是Mod根路径加上自定义Clip资源存放路径,注意要写全和你在XML调用unity模型一样!
                        return $"#{rootLocation}/Bundle/xxx.unity3d?xxx";
                    }
                }
                //Prefix表示在目标成员首行前插入代码/补丁
                [HarmonyPrefix]
                //由于我们不需要进行拦截,所以即使该函数被HarmonyPrefix特性标记我们也不需要它有任何返回值
                public static void AddPrefix()
                {
                        //通过DataLoader类里面的LoadAsset静态泛型方法调用自定义资源,泛型类型为AudioClip,参数为资源路径
                    AudioClip clip = DataLoader.LoadAsset<AudioClip>(MyPath);
                    //null值处理,我就不再过多强调(这里做了一个早期返回处理)
                    if (clip == null)
                    {
                        Debug.LogWarning("Cannot load given audio clip! Ignoring...");
                        return;
                    }
                    //如果资源不为null,就不会被return掉。然后将加载的自定义背景音乐Clip赋值给原版DLL进行覆盖,让他加载我们的Clip
                    GameManager.Instance.BackgroundMusicClip = clip;
                }
            }
        }
    }

    "点赞是美意,打赏是鼓励"

    Lv.6
    浴火重生
    打赏了20金币
    回复
    因恶意刷帖用户过多,本版块已取消回帖金币奖励,请签到获取!>>>金币获取指南<<<

    请登录之后再进行评论

    登录
    • 大版主
    • 小版主
  • yichen
  • 柒月白风清
    柒月白风清
    一只小萌新,万年摸鱼党!已经脱坑了。。。
  • Cure_805
    Cure_805
    晚上在睡觉,白天在工作,不一定能及时回复,有事可以留言!
  • 至善丶丶
    至善丶丶
    群:1050040662 定制/开服/地图制作/价格公道
  • 东方清华EX
    东方清华EX
    一个爱玩七日杀的妹纸
  • 暂没有数据

    赞助广告位

  • 点击展示图片即可一键加入QQ群
    赞助广告:100R/月 目前空缺广告位:0

    分享网站

  • 繁体中文
  • 任务
  • 动态
  • 到底部
  • 帖子间隔 侧栏位置: