前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >unity+live2d制作galgame框架

unity+live2d制作galgame框架

作者头像
歪歪梯
发布2022-11-22 15:29:57
1.3K0
发布2022-11-22 15:29:57
举报
文章被收录于专栏:歪歪梯Club歪歪梯Club

前置准备

安装unity【free版即可】 https://unity.cn/ 下载live2d的sdk https://www.live2d.com/zh-CHS/download/cubism-sdk/download-unity/ unity创建2d项目并导入sdk(直接将sdk拖入package并点击import)

创建项目

分层

默认的2d模板只有一个主相机,我们可以先增加两个cavas,作为前景和背景的画板 live2d的模型由sdk自己绘制,不需要新增canvas 两个canvas分别命名为Canvas_BG(背景)和Canvas_FG(前景)

分层面板

按钮和背景图

两个背景分别增加一个panel作为容器,存放背景图或者按钮、对话框

面板组件

为了设置ui的绘制层级,将背景板的sortorder设置为-1000,前景板设置为1000 分别对panel增加背景图和设置背景色即可达到分层遮罩效果

设置遮罩效果 接着从assert里面选中live2d的模型,拖拽到场景里

导入live2d模型 这时live2d模型会看不见,需要调整下另外两个canvas的渲染模式为screen space camera并绑定主相机

live2d模型绑定相机 这样场景里就有了

live2D模型控制

将live2d的模型对象命名为Koharu 则接下来可以通过给Koharu对象挂载下面脚本,提供操作类KoharuModelControl 外部事件通过静态方法GetControlInstance获得实例后,调用实例方法PlayAnimation播放模型动作 通过GetAnimations方法获得可选的动作对象

代码语言:javascript
复制
using Live2D.Cubism.Core;
using Live2D.Cubism.Framework;
using Live2D.Cubism.Framework.Expression;
using Live2D.Cubism.Framework.Motion;
using Live2D.Cubism.Framework.Raycasting;
using System;
using System.Collections.Generic;
using UnityEngine;

public class KoharuModelControl : MonoBehaviour
{
    public Live2D.Cubism.Core.CubismModel _model;
    public static GameObject _koharu;

    [SerializeField]
    private AnimationClip[] _BodyMotions;

    private static KoharuModelControl _this;

    public static KoharuModelControl GetControlInstance(){
        if(_this == null){
            var _instances = UnityEngine.MonoBehaviour.FindObjectsOfType<KoharuModelControl>();
            _this = _instances[];
        }
        return _this;
    }

    public AnimationClip[] GetAnimations(){
        return _BodyMotions;
    }

    public void PlayAnimation(AnimationClip clip, bool isLoop=false, int priority=CubismMotionPriority.PriorityForce){
        var _motionController = _model.GetComponent<CubismMotionController>();
        _motionController.PlayAnimation(clip, isLoop: isLoop, priority:priority);
    }

    void Start()
    {
        _koharu = GameObject.Find("Koharu");
        _model = this.FindCubismModel();
        Debug.Log("model init " + _model);
    }

接下来,使用常规的按钮事件,给按钮和对话框关联live2d模型即可实现交互

如果需要导入多个live2d模型或者控制live2d模型隐藏,则可以在KoharuModelControl里面加入方法,控制Active属性设置隐藏或显示

代码语言:javascript
复制
    public static void SetObjectActive(boolisActive){
        _koharu.SetActive(isActive);
    }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 歪歪梯Club 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前置准备
  • 分层
    • 按钮和背景图
    • live2D模型控制
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档