字符串数组——传递文本的不同方法实例

一、实例化一个文本并在文本上直接显示接收的信息
1、制作一个预制体

(1) UI-Text (TMP),TitleText

(2) 给Text (TMP)添加Recipients.cs组件

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

public class Recipients : MonoBehaviour
{
    public TextMeshProUGUI TitleText;//在Unity赋值

    //接收文本数据
    public void initData(string titleText)
    {
        //在TitleText.text文本中显示接收到的文本内容
        TitleText.text = titleText;
    }
}

(3) 将UI-Text (TMP)制成预制体,并从Hierarchy中删除该预制体

2、给Canvas添加Sender.cs组件

(1) Sender.cs

using System.Collections;
using System.Collections.Generic;
using UnityEditor.Experimental.GraphView;
using UnityEngine;

public class Sender : MonoBehaviour
{
    public Recipients titleText;
    // Start is called before the first frame update
    void Start()
    {
        CreateTitleText();
    }

    public void CreateTitleText()
    {
        Recipients t = Instantiate(titleText, this.transform);//调用Recipients.cs实例上的initData方法,并传递一个字符串参数
        t.initData("传递方直接传递文本"); 
    }
}

(2) 赋值

二、用不同的方法传递文本
1、通过字符串:

(1) 声明一个字符串

string strs; //string:类型;   strs:变量名

(2) 传递

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

public class Sender : MonoBehaviour
{
    public Recipients titleText;//接收方的接收文本
    void Start()
    {
        string str = "直接传输";
        CreateTitleText(str);
    }

    public void CreateTitleText(string transmission)//transmission是自取的名字
    {
        Recipients t = titleText;
        t.initData(transmission); 
    }
}

(3) 接收

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

public class Recipients : MonoBehaviour
{
    public TextMeshProUGUI TitleText;//在Unity中赋值一个文本(用于接收文本信息)
    public void initData(string titleText)//接收的文本命名为titleText
    {
        TitleText.text = titleText;//在TitleText.text文本中显示接收到的文本内容
    }
}

注意:两个脚本中都要在Unity给文本赋值

2、声明一个字符串组
string[] strs = new string[3];     //声明一个字符串数组,且初始化它的长度为3

(1) string:类型;  []:数组; strs:变量名

(2) 数组需要初始化之后 才能使用。

(3) 初始化的方法:类型+[] + 变量名 = new string[3];

(4) 调用字符串的数据的实例

发送方:

     public Nodes node;
       

    void Start()
    {
        
        string[] strs = new string[3];     //声明一个包含三个字符串元素的数组
                                           //string:类型;  []:数组; strs:变量名
                                           
        strs[0] = "strs这个数组中的第一个数据序号为0";//将数组的第一个元素(索引为0)设置为指定的字符串内容
        CreateNode(strs[0]);//调用方法,传递整个字符串数组
    }

    public void CreateNode(string strs)
    {
        Nodes n = Instantiate(node, this.transform);//创建一个node预制体的实例,并将这个实例赋值给变量n
        this.transform:新实例将作为当前对象(脚本所挂载的物体)的子对象

        //调用Nodes.cs实例上的initData方法,并传递一个字符串参数
        n.initData(strs); //n:node预制体实例;
                         //n.initData();:调用预制体本身携带的公开的方法(在Nodes脚本中创建的方法)
                         //括号内要写类型与接收方要求的相同的数据
    }

接收方:

public class Nodes : MonoBehaviour

    public TextMeshProUGUI nodeTitle;

    public void initData(string titleText)//初始化节点的数据(类型是String;名字是titleText)
                                          //把接收到的文本命名为titleText
                                          //初始化节点的数据,接收一个字符串类型的参数titleText作为标题文本
    {
        //使用接收到的文本titleText更新nodeTitle文本组件的内容
        nodeTitle.text = titleText;//将nodeTitle文本组件的内容设置为接收到的titleText(在nodeTitle.text文本中显示接收到的文本内容)
    }

(5) 优化后的方法

public GameObject nodePrefab; // 在Unity编辑器中设置的预制体

    // Start is called before the first frame update
    void Start()
    {
        string[] strs = new string[3]; // 声明一个包含三个字符串元素的数组
        strs[0] = "strs这个数组中的第一个数据序号为0"; // 设置数组的第一个元素
        // ... 可以设置strs[1]和strs[2]
        CreateNode(strs); // 调用方法,传递整个字符串数组
    }
public void CreateNode(string[] strs) // 字符串数组
    {
        GameObject newNode = Instantiate(nodePrefab, this.transform); // 创建预制体的实例
        Nodes n = newNode.GetComponent<Nodes>(); // 获取Nodes组件
        if (n != null) // 检查是否成功获取到了组件
        {
            n.initData(strs); // initData方法接受一个字符串数组作为参数
        }
        else
        {
            Debug.LogError("No Nodes component found on the instantiated prefab!");
        }
    }
3、利用List传递文本

(1) 声明并 初始化变量

List<string> strs_02 = new List<string>();//声明并初始化一个名为strs_02,类型为List<string> 的变量

(2) 调用变量:

类型一:调用数组中的变量

strs_02.Add(strs[0]);

strs_02:变量名

Add:调用

(strs[0]):strs数组中的索引号为0的值

类型2:直接调用字符串

strs_02.Add("strs[0]");

strs_02:变量名

Add:调用

("strs[0]"):输出的是双引号内的文字

        // 将strs数组的第一个元素添加到strs_02列表中
        strs_02.Add(strs[0]);//第一个Add,后面跟的就是strs_02中的序号为0的数据。在这里调用的是strs数组中序号为0的字符串

        // 添加字符串"strs[0]"到strs_02列表中,而不是数组strs的某个元素
        strs_02.Add("strs[0]");//注意:这里添加的是字面上的字符串"strs[0]",而不是strs数组中的某个值

(3) 实例:

繁琐但超小白注释:

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

public class Test : MonoBehaviour
{
    public Nodes node;
    // Start is called before the first frame update
    void Start()
    {
        
        string[] strs = new string[3];     //声明一个字符串数组,并分配了3个元素的空间
                                           //string:类型;  []:数组; strs:变量名
                                           //数组需要初始化之后 才能使用。初始化的方法:……= new string[3];
                                           //这一步已经完成了初始化
        //将数组的第一个元素(索引为0)设置为指定的字符串内容
        strs[0] = "strs这个数组中的第一个数据序号为0";//给数组的第一个位置(索引0)赋值
        strs[1] = "测试序号1";
        strs[2] = "测试序号2";

        // 声明并初始化一个空的List<string>类型的变量,名字为strs_02
        List<string> strs_02 = new List<string>();

        // 将strs数组的第一个元素添加到strs_02列表中
        strs_02.Add(strs[0]);//第一个Add,后面跟的就是strs_02中的序号为0的数据。在这里调用的是strs数组中序号为0的字符串

        // 添加字符串"strs[0]"到strs_02列表中,而不是数组strs的某个元素
        strs_02.Add("strs[0]");//注意:这里添加的是字面上的字符串"strs[0]",而不是strs数组中的某个值

        // 调用CreateNode方法,传递strs_02列表中的第一个元素作为参数
        CreateNode(strs_02[0]);//传递的是"strs这个数组中的第一个数据序号为0"这段文字

        // 调用CreateNode方法,传递strs_02列表中的第二个元素作为参数
        CreateNode(strs_02[1]);//传递的是strs_02中的序号为1的数据,即:"strs[0]"这段文字

    }

    public void CreateNode(string strs)
    {
        Nodes n = Instantiate(node, this.transform);//创建一个node预制体的实例,并将这个实例赋值给变量n
                                                    //node:要实例化的预制体;this.transform:新实例将作为当前对象(脚本所挂载的物体)的子对象
        //调用Nodes.cs实例上的initData方法,并传递一个字符串数组的参数
        n.initData(strs); //n:node预制体实例;
                             //n.initData();:调用预制体本身携带的公开的方法(在Nodes脚本中创建的方法)
                             //括号内要写类型与接收方要求的相同的数据
    }
}

普通小白注释

public Nodes nodePrefab;//Nodes.cs中的node预制体

void Start()
    {
        string[] strs = new string[3]; // 声明并初始化字符串数组
        strs[0] = "strs这个数组中的第一个数据序号为0";//赋值
        strs[1] = "测试序号1";
        strs[2] = "测试序号2";

        List<string> strs_02 = new List<string>(); // 声明并初始化List<string>
        strs_02.Add(strs[0]); // 添加数组的第一个元素到列表
        strs_02.Add("strs[0]"); // 添加字符串"strs[0]"到列表

        // 调用CreateNode方法,传递strs_02列表中的元素作为参数
        CreateNode(strs_02[0]); // 传递列表中的第一个元素
        CreateNode(strs_02[1]); // 传递列表中的第二个元素
    }

public void CreateNode(string data)
    {
        Nodes n = Instantiate(nodePrefab, this.transform); // 实例化Nodes预制体
        n.initData(data); // 调用initData方法,传递数据给节点进行初始化
    }

直接上手试版本:

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

public class Test : MonoBehaviour
{
    public Nodes node;
    void Start()
    {
        string[] strs = new string[3];     
        strs[0] = "输出的是数组中的文字";
        strs[1] = "测试序号1";
        strs[2] = "测试序号2";

        List<string> strs_02 = new List<string>();
        strs_02.Add(strs[0]);
        strs_02.Add("输出的是Add.后面括号里面双引号里面的文字");

        CreateNode(strs_02[0]);
        CreateNode(strs_02[1]);
    }
    public void CreateNode(string data)
    {
        Nodes n = Instantiate(node, this.transform);
        n.initData(data); 
    }
}
4、利用Dictionary传递文本
Dictionary<int,string> strs3= new Dictionary<int,string>();//声明并初始化字典,名字是strs3

Dictionary

作用:加了索引的列表。给每个数据都取了个名字,方法查找、修改、调用数据

解释:

Dictionary:字典

<int,string>:int——键的类型(整数)         string:值的类型——字符串

添加数据:

strs3.Add(1001, "文本内容");

调用

TransferTitleText(strs3[1001]);

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 05:22:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 05:22:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 05:22:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 05:22:02       18 阅读

热门阅读

  1. Linux更改默认python版本

    2024-06-17 05:22:02       7 阅读
  2. 力扣上的经典问题:接雨水

    2024-06-17 05:22:02       6 阅读
  3. C++文本文件的读与写

    2024-06-17 05:22:02       6 阅读
  4. C++回溯算法

    2024-06-17 05:22:02       6 阅读
  5. 杂谈-Android和Ios的对比

    2024-06-17 05:22:02       10 阅读
  6. MySQL 保姆级教程(六):用通配符进行过滤

    2024-06-17 05:22:02       7 阅读
  7. 人工智能和印度大选

    2024-06-17 05:22:02       6 阅读
  8. 烧结银赋“芯”生,引领半导体革命

    2024-06-17 05:22:02       8 阅读
  9. ffmpeg转换视频格式

    2024-06-17 05:22:02       5 阅读