Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)

原教程:siki:二次元日系游戏制作工具 - live2dSDK入门教程
Unity学习笔记—二次元日系游戏制作(理论篇)
Unity学习笔记—二次元日系游戏制作(实践篇-游戏初始化场景制作)

三、游戏开始场景制作

1、导入
在这里插入图片描述
2、生成Woman角色
报错:类型“UnityEngine.AudioClip”未定义构造函数
AudioClip player = AudioClip.Create(“MySinusoid”,44100*2,1,44100,true);
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第1张图片
默认路径为Resources,需要加后缀
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第2张图片
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第3张图片
3、制作UI
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第4张图片
创建游戏管理
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第5张图片

using UnityEngine.UI;

public class GameManager : MonoBehaviour
{
    //单例
    private static GameManager _instance;     //ctrl+R,curl+E 
    public static GameManager Instance
    {
        get { return GameManager._instance; }
       
    }

    //玩家属性
    public int gold;
    public int favor;
    public int leftdays;

    public Text goldText;
    public Text favorText;
    public Text dateText;

    private void Awake()
    {
        _instance = this;
        gold = favor = 0;
        leftdays = 20;
        UpdateUI();
    }
    void Update()
    {
        
    }

    //更新玩家属性UI的显示
    private void UpdateUI()
    {
        goldText.text = gold.ToString();
        favorText.text = favor.ToString();
        dateText.text = leftdays.ToString();
    }

    //金币数额变化的方法
    public void ChangeGold(int goldValue)
    {
        gold += goldValue;
        if (gold<0)
        {
            gold = 0;
        }
        UpdateUI();
    }

    //好感度变化的方法
    public void ChangeFavor(int favorValud)
    {
        favor += favorValud;
        if (favor<0)
        {
            favor = 0;
        }
        UpdateUI();
    }

}


4、天黑天亮
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第6张图片

  //天黑天亮属性
    public Image mask;
    public bool toAnotherDay;
    public bool toBeDay;  //即将天亮
    private float timeValue;
    
     void Update()
    {
        //是否过渡到另外一天
        if (toAnotherDay)
        {
            if (toBeDay)
            {
                //天亮之前黑两秒 增加体验感
                if (timeValue>=2)
                {
                    timeValue = 0;
                    ToDay();
                }
                else
                {
                    timeValue += Time.deltaTime;
                }
            }
            else
            {
                //天黑
                ToDark();
            }
        }
    }
     //天黑
    public void ToDark()
    {
        mask.color += new Color(0, 0, 0, Mathf.Lerp(0, 1, 0.1f));
        if (mask.color.a>=0.8f)
        {
            mask.color = new Color(0, 0, 0, 1);//黑天
            toBeDay = true; 
            UpdateUI();
        }
    }

    
    //天亮
    public void ToDay()
    {
        mask.color -= new Color(0,0,0,Mathf.Lerp(1,0,0.1f));
        if (mask.color.a<=0.2f)
        {
            mask.color = new Color(0, 0, 0, 0);
            toAnotherDay = false;
            toBeDay = false;
        }
    }

    

5、对话框
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第7张图片
6、打工按钮
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第8张图片

    public LAppModelProxy lAppModelProxy;

    public GameObject actionBtns; //打工,约会等

    public GameObject talkLine;
    public Text talkLineText;
    //工作
    public GameObject workBtns; //做甜点等
    public Sprite[] workSprites;
    public Image workImage;
    public GameObject workUI;
    
    public void ToDark()
    {
        mask.color += new Color(0, 0, 0, Mathf.Lerp(0, 1, 0.1f));
        if (mask.color.a>=0.8f)
        {
            mask.color = new Color(0, 0, 0, 1);//黑天
            toBeDay = true; 
            ResetUI();
            UpdateUI();
        }

    }

    public void ClickWorkBtn()
    {
        //UI面板显示 
        actionBtns.SetActive(false);
        workBtns.SetActive(true);
        lAppModelProxy.SetVisible(false);
    }


    //进入具体工作之后,获取奖励
    public void GetMoney(int workIndex)
    {
        workBtns.SetActive(false);
        ChangeGold((4-workIndex)*20);
        workImage.sprite = workSprites[workIndex];
        workUI.SetActive(true);
        talkLine.SetActive(true);
        talkLineText.text = "劳动最光荣!经过劳动得到" + ((4 - workIndex) * 20).ToString()+ "的金币。";
    }

    //重置所有UI
    public void ResetUI()
    {
        workUI.SetActive(false);
        talkLine.SetActive(false);
        actionBtns.SetActive(true);
        lAppModelProxy.SetVisible(true);
        leftdays--;
    }
    

Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第9张图片
监测是否点击打工按钮
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第10张图片
检测是否点击具体工作,根据不同的工作进行不同的金币奖励
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第11张图片
检测是否点击了对话框,点击即意味着一天的结束
Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上)_第12张图片

你可能感兴趣的:(Unity学习笔记—二次元日系游戏制作(实践篇-游戏开始场景制作上))