unity卡牌游戏开发记录(2)

这篇具有很好参考价值的文章主要介绍了unity卡牌游戏开发记录(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有了卡牌,当然少不了卡组。为了创建一个卡组,首先当然是有一大堆卡。为了一个卡牌库,我原本打算用数据库,不过还是懒了,先用excel撑着先。当然,一开始肯定没多少卡,姑且做个十来张再说。配套的还有对应的ui界面,先做一个先

--------------------------------------------------------分割线----------------------------------------------------------------

捣鼓了一会,大概整出来这么个东西,明白的朋友想必已经明白我做的是谁的同人了()

canvas开发卡牌游戏,unity,游戏引擎

记得管理好场景文件,在左上角文件-生成设置中把当前场景加入编辑器

接下来给卡组编辑按钮添加一个点击事件,用来转到卡组编辑界面。为了方便管理,我们可以新建一个空对象,取名为changescene,给这个对象挂载一个脚本,里面根据场景的不同写不同的场景加载函数,这样就能仅仅使用一个对象来放到任意切换场景的按钮上。

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


public class changescene : MonoBehaviour
{
    public void change_scene_deck()
    {
        SceneManager.LoadScene("deck_scene");
    }
    public void change_scene_start() {
        SceneManager.LoadScene("start_scene");
    }
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

-----------------------------------------------分割线-------------------------------------------------------------------------

既然要编辑卡组,当然要做一个能检索所有卡牌的列表。设想是进入卡组编辑界面后,卡牌列表读取卡牌文件信息,以卡牌的形式显现。对之前做的card预制体做一下修改,让它更方便地显示在列表中。

canvas开发卡牌游戏,unity,游戏引擎canvas开发卡牌游戏,unity,游戏引擎

然后是做一个列表。找各种资料找了两天才做出来一个稍微满意的,这也是拖更的原因(X)

在Canvas中添加一个面板(Panel),命名为all_cards。面板中添加两个组件,分别是Scroll Rect和Mask。Scroll用来做滚动列表,Mask用来做遮罩,让超出列表的部分隐藏起来。

之后在面板上添加一个空物体,命名为content,用来规定卡牌显示范围,再在content下添加一个空物体,命名为parent,这个parent就是所有卡牌的父物体。另外再在面板上添加一个滚动条方便查看卡牌。注意下图,修改scroll rect中的内容,水平,viewport,垂直滚动条等属性

canvas开发卡牌游戏,unity,游戏引擎canvas开发卡牌游戏,unity,游戏引擎

之后在parent中加入一个vertical layout group组件,可以把所有子物体作为一个列表排列。可以多加几个子物体试试,找到适合自己的位置和大小。

canvas开发卡牌游戏,unity,游戏引擎

这就是我的卡牌列表。接下来就是写脚本,读取文件然后显示在列表中。

首先是被读取的数据形式,为了方便新建卡牌和管理,我使用excel创建,然后转csv格式来读取。

canvas开发卡牌游戏,unity,游戏引擎

导出为带逗号的csv文件

canvas开发卡牌游戏,unity,游戏引擎

注意csv格式最后有个回车,记得删掉,或者自己在写代码的时候注意。为了方便还是选择public的变量。卡牌文件名是card。

canvas开发卡牌游戏,unity,游戏引擎

public GameObject parent;
public GameObject card_indeck;
public GameObject content;
public TextAsset all_card;
void GetCard()
{
    int height = 562;
    string[] datarow = all_card.text.Split("\n");
    foreach (var item in datarow)
    {
        string[] carddata = item.Split(',');
        if(carddata[0] == "id") {
            continue;
        }
        //根据读取的数据新建卡牌
        int.TryParse(carddata[0], out int id);
        int.TryParse(carddata[1], out int cost);
        string name = carddata[2];
        int.TryParse(carddata[3], out int attack);
        int.TryParse(carddata[4], out int defense);
        int.TryParse(carddata[5], out int health);
        int.TryParse(carddata[6], out int fakang);
        string birth = carddata[7];
        string career = carddata[8];
        string force = carddata[9];
        string race = carddata[10];
        string skill = carddata[11];

        GameObject a = Instantiate(card_indeck, transform.position, Quaternion.identity);//实例化物体
        a.transform.Find("name").GetComponent<TextMeshProUGUI>().text = name;
        a.transform.Find("attack").GetComponent<TextMeshProUGUI>().text = attack.ToString();
        a.transform.Find("defense").GetComponent<TextMeshProUGUI>().text = defense.ToString();
        a.transform.Find("fakang").GetComponent<TextMeshProUGUI>().text = fakang.ToString();
        a.transform.Find("health").GetComponent<TextMeshProUGUI>().text = health.ToString();
        a.transform.parent = parent.transform;//把实例化的物体放到父物体之下

        //增加框框高度
        height += 120;
        content.GetComponent<RectTransform>().sizeDelta = new Vector2(125, height);
    }
}

注意增加卡牌同时要增加content的高度,不然游戏中列表拖不下去。

贴一下整个文件的代码

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class showcard : MonoBehaviour
{
    public GameObject parent;
    public GameObject card_indeck;
    public GameObject content;
    public TextAsset all_card;
    // Start is called before the first frame update
    void Start()
    {
        GetCard();
    }

    // Update is called once per frame
    void Update()
    {
        
      
    }

    //读取所有卡片文件
    void GetCard()
    {
        int height = 562;
        string[] datarow = all_card.text.Split("\n");
        foreach (var item in datarow)
        {
            string[] carddata = item.Split(',');
            if(carddata[0] == "id") {
                continue;
            }
            //根据读取的数据新建卡牌
            int.TryParse(carddata[0], out int id);
            int.TryParse(carddata[1], out int cost);
            string name = carddata[2];
            int.TryParse(carddata[3], out int attack);
            int.TryParse(carddata[4], out int defense);
            int.TryParse(carddata[5], out int health);
            int.TryParse(carddata[6], out int fakang);
            string birth = carddata[7];
            string career = carddata[8];
            string force = carddata[9];
            string race = carddata[10];
            string skill = carddata[11];

            GameObject a = Instantiate(card_indeck, transform.position, Quaternion.identity);//实例化物体
            a.transform.Find("name").GetComponent<TextMeshProUGUI>().text = name;
            a.transform.Find("attack").GetComponent<TextMeshProUGUI>().text = attack.ToString();
            a.transform.Find("defense").GetComponent<TextMeshProUGUI>().text = defense.ToString();
            a.transform.Find("fakang").GetComponent<TextMeshProUGUI>().text = fakang.ToString();
            a.transform.Find("health").GetComponent<TextMeshProUGUI>().text = health.ToString();
            a.transform.parent = parent.transform;//把实例化的物体放到父物体weizhi之下

            //增加框框高度
            height += 120;
            content.GetComponent<RectTransform>().sizeDelta = new Vector2(125, height);
        }
    }
}

运行截图:

canvas开发卡牌游戏,unity,游戏引擎

预告一下,下一次做真正的卡组编辑。文章来源地址https://www.toymoban.com/news/detail-842002.html

到了这里,关于unity卡牌游戏开发记录(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 使用团结引擎开发Unity 3D射击游戏

           本案例是初级案例,意在引导想使用unity的初级开发者能较快的入门,体验unity开发的方便性和简易性能。       本次我们将使用团结引擎进行开发,帮助想体验团结引擎的入门开发者进行较快的环境熟悉。      本游戏是一个俯视角度的射击游戏。主角始终位于屏幕

    2024年01月19日
    浏览(78)
  • Unity、UE、Cocos游戏开发引擎的区别

    Unity、Unreal Engine(UE)和Cocos引擎是三个常用的游戏开发引擎,它们在功能和特性上有一些区别。以下是它们之间的主要区别: 编程语言:Unity使用C#作为主要的编程语言,开发者可以使用C#脚本进行游戏逻辑编写。Unreal Engine主要使用C++作为编程语言,但也支持蓝图系统,允许

    2024年02月22日
    浏览(66)
  • 【用unity实现100个游戏之7】从零开始制作一个仿杀戮尖塔卡牌回合制游戏(附项目源码)

    参考原视频链接: 【视频】:https://www.bilibili.com/video/BV1eF41177hu/ 注意 :本文为学习笔记记录,推荐支持原作者,去看原视频自己手敲代码理解更加深入

    2024年02月08日
    浏览(118)
  • Unity 开发人员转CGE(castle Game engine)城堡游戏引擎指导手册

    一、简介 2. Unity相当于什么GameObject? 3. 如何设计一个由多种资产、生物等组成的关卡? 4. 在哪里放置特定角色的代码(例如生物、物品)?Unity 中“向 GameObject 添加 MonoBehaviour”相当于什么? 5.Unity子目录相当于什么Assets? 6. 支持哪些模型格式? 7. 支持FBX模型格式吗? 8.

    2024年02月07日
    浏览(79)
  • 游戏开发常用引擎工具介绍对比区别(UE4,Unity,Cocos,LayaAir,[egret-白鹭])

    是一套为开发实时技术而存在的引擎工具。目前广泛应用于3D建模渲染、游戏开发中。它完善的工具套件以及简易的工作流程能够使开发者快速修改或查看成果,对于代码的依赖性很低。而完整公开的源代码则能让使用者自由修改和扩展引擎功能。 是面向开发人员的 3D/2D 游戏

    2024年02月13日
    浏览(68)
  • 吐槽laya:H5小游戏开发应该用什么引擎好?laya、cocos还是unity?

    我看有人推荐laya,放在H5小游戏的前三排名,这压根不靠谱。 laya只能算个半成品,整体非常垃圾,如果是首次选择游戏引擎,至少转去cocos,实在选laya,那也没办法了。 下面说说laya有什么问题,如果只是一些简单的bug什么的,我是不会花这个时间吐槽的,但是如下的问题实

    2024年02月13日
    浏览(62)
  • Unity微信小游戏使用微信云开发记录

    最近项目上架微信小游戏,首先使用了微信官方sdk转成微信小游戏,官方地址如下: https://github.com/wechat-miniprogram/minigame-unity-webgl-transform 官方给了各种指导,虽然都有但是都不太精哈哈 因为要做排行榜,云存档,而我司没服务器,那只能用微信云开发了。具体开通啥的初始

    2023年04月09日
    浏览(54)
  • C语言与游戏引擎插件开发:Unity、Unreal Engine中C插件的编写与集成(一)

    目录 一、引言 C语言在游戏开发中的重要地位与优势 游戏引擎插件机制与C语言的价值 二、C语言基础与游戏开发特性 C语言核心特性及其在游戏开发中的应用 游戏引擎API对接关键概念与技巧 C语言在游戏开发领域占据着无可替代的重要地位,尤其在应对高性能计算需求与底层

    2024年04月29日
    浏览(72)
  • C语言与游戏引擎插件开发:Unity、Unreal Engine中C插件的编写与集成(四)

    目录 一、C插件开发最佳实践与常见问题解析 性能优化: 跨平台兼容性: 版本管理与升级: 二、结论 C语言在游戏引擎插件开发中的关键作用与优势: 对开发者提出建议: 性能优化: 内存管理: 智能指针 :利用UE的 TSharedPtr 、 TWeakPtr 等智能指针管理动态内存,确保资源释

    2024年04月27日
    浏览(55)
  • 十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(79)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包