Unity读取Excel表中X和Y数据,并绘制相应曲线

上一篇文章主要写了怎么利用Line Renderer组件绘制自己想要的函数曲线,我想,如何实现从Excel表中读取数据,然后再绘制曲线,经过差多方资料,终于实现了。上篇文章链接: link.

前言

本文的研究读取Excel的方法主要参考了絮大王的文章,链接: link.这里特地表示感谢,大家有兴趣的可以看一下哈

步骤

1、下载絮大王提供的插件

本插件主要是把Excel文件转化为Json文件,方便Unity读取。

2、创建好工程,导入下载好的插件

导入后的目录

3、创建空物体,并添加Line Renderer组件

Unity读取Excel表中X和Y数据,并绘制相应曲线_第1张图片

4、创建EXCEL文件,依据教程填写数据

Unity读取Excel表中X和Y数据,并绘制相应曲线_第2张图片
这里的X和HP分别作为X轴坐标数据和Y轴坐标数据,其他的填了但是没有在程序中读取,第一行的内容可以依据自己需要随意更改。

5、保存Excel数据表,利用插件转化格式

必须保存后转化,不然会报错
把表格和插件放到同一个文件夹下,双击插件。
Unity读取Excel表中X和Y数据,并绘制相应曲线_第3张图片
转化完成

6、创建第一个代码,名命为“MyDate”

此代码不用挂载

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyDate  {
        public int ID;
        public int X;
        public float Hp;
        public string Name;
        public string description;
        public int[] Attack;
}

7、创建第二个代码,名命为“Line1”

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading;

public class Line1 : MonoBehaviour {
    public string jsonPath = "F:/unitywork/EXCLE/Assets/Resouses/Enemydata.json";
    private LineRenderer lr;
    public float x = 0.1f;
    public float y = 0.1f;
    public float speed;
    void Start()
    {
        List datas = JsonToObject.JsonToObject_ByJsonFile(jsonPath);

        lr = GetComponent();
        lr.material = new Material(Shader.Find("Sprites/Default"));
        lr.startWidth = 0.2f;                                    //设置画线开始宽度
        lr.endWidth = 0.2f;                                      //设置画线结束宽度
        lr.startColor = Color.red;                               //设置画线开始颜色
        lr.endColor = Color.red;                                 //设置画线结束颜色

        // Set some positions
        Vector3[] positions = new Vector3[datas.Count];//100个设置点

        for (int i = 0; i < datas.Count; i++)
        {
            positions[i] = new Vector3(x, y, 0);
            x = datas[i].X;
            y = datas[i].Hp;
            
            //positions[1] = new vector3(0.0f, 2.0f, 0.0f);
            //positions[2] = new vector3(2.0f, -2.0f, 0.0f);
            //positions[3] = new vector3(2.0f, -4.0f, 0.0f); 
            //Debug.Log(positions[i]);
        }

        lr.positionCount = positions.Length;
        lr.SetPositions(positions);

    }

本代码挂载到空物体上

8、效果

Unity读取Excel表中X和Y数据,并绘制相应曲线_第4张图片
欢迎大家相互交流,目前还有好多没有实现的功能,正在研究,各位unity爱好者如果可以,我们相互交流,欢迎评论。
备注,这个插件,在UNITY工程发布以后,照样可以读取改变数据后并转化后的Excel文件。

你可能感兴趣的:(经验,总结)