在两个脚本之间传输文本信息

2024-06-15 21:28

本文主要是介绍在两个脚本之间传输文本信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说明:实例是先做的,总纲是学习后总结并完善的

一、总纲

(一)要素

发送方:
1.传递文本时,在发送方需要声明一个变量。

(1) 如果在接收方有一个现有文本,发送方声明的变量

public Recipients titleText;//接收方脚本中的,用来接收传递文本信息的变量

Recipients :接收方脚本的名称

titleText:接收方脚本中设置的,用于接收信息的文本

(2) 如果在接收方需要实例化文本,发送方声明的变量

  public Recipients recipientsPrefab; // 引用Recipients类型的预制体(需要在Unity赋值)  private Recipients recipientsInstance; // 用于存储Recipients的实例引用(在Start方法中实例化的时候赋值)
2.发送方还需要有一个方法用于传递信息(这个方法实质上起到了中转的作用

(1) 如果在接收方有一个现有文本,发送方的TransferTitleText方法

    public void TransferTitleText(string transmission)//定义一个公开的方法,它接收一个字符串类的参数(transmission){titleText.initData(transmission);//调用 titleText 对象的 initData 方法,并传递了 transmission 字符串作为参数//可替换这两句:Recipients t = titleText; t.initData(transmission);        }

A.  TransferTitleText(string transmission)

  TransferTitleText:方法的名称(传输标题文本——中转标题文本更好?)。

                                       可根据需要自主命名。SetTitleText(设置标题文本)更合适?

     string :参数类型。表示调用这个方法时在()内要写string类的参数

                 transmission:是参数的名字(可按需自主命名),它只是一个占位符。

                                          可接收任何传入的字符串(你把它变成什么,它就是什么)如下例

      TransferTitleText(string transmission)方法被调用时,可以输入string类型的参数。如

TransferTitleText(str);//str:string类型的参数

   再如

//方法:
public void initData(string titleText)
{TitleText.text = titleText;
}//调用
titleText.initData(transmission);

B.  titleText.initData.(transmission);

  titleText.initData:调用 titleText 对象的 initData 方法

     titleText:接收方脚本中的文本,接收由transmission传递来的字符串

     initData:接收方脚本中的方法,在发送方脚本中调用。在两个脚本之间传递 ()中的内容

  transmission:用来初始化titleText文本的文本内容。并将接收到的字符串传递给titleText

           初始化:把titleText文本中的原有内容替换成transmission接收到的内容

(2) 如果在接收方需要实例化文本,发送方的StartTransferTitleText方法

Start方法中实例化文本预制体

  void Start(){//实例化预制体recipientsInstance = Instantiate(recipientsPrefab, this.transform);}

recipientsInstance:用于存储实例化出来的预制体。在步骤1.中已经声明

TransferTitleText方法中传输文本

public void TransferTitleText(string transmission){// 如果recipientsInstance尚未实例化,则创建一个新实例(正常情况下在Start方法中已经创建了)if (recipientsInstance == null){recipientsInstance = Instantiate(recipientsPrefab, this.transform);}// 设置recipientsInstance的文本内容recipientsInstance.initData(transmission);}
3.发送方还需要有一个Start方法,以调用传递方法设定传递数值

(1) 直接在方法中设定传递数值:

    void Start(){TransferTitleText("直接传输");       }

效果图

(2) 通过字符串设定传递数值:

    void Start(){string str = "通过变量“str”传输";TransferTitleText(str);}

效果图

4.将发送方的脚本挂载在场景中的常驻物体上
5.赋值
接收方:
1.传递文本时,接收方需要有一个文本或者一个文本预制体,以承载接收的文本信息
public TextMeshProUGUI TitleText;//在Unity中赋值一个文本(用于接收文本信息)
2.接收方还需要有一个用于接收信息的方法,挂载在步骤1的文本或预制体上
    public void initData(string titleText)//接收的文本命名为titleText{TitleText.text = titleText;//在TitleText.text文本中显示接收到的文本内容}

initData:方法名。可以根据需要命名,但,需要与发送方调用的方法名一致。

(string titleText):在本脚本(接收方)声明的一个局部变量,用来存储传递过来的文本信息

TitleText.text = titleTexttitleText上存储的文本信息在TitleText上显示出来

3.把接收方脚本挂载在文本或预制体上
4.赋值
关于赋值:
1、将接收方的脚本挂载到含有文本的物体上

(1) 根据需要可以挂在预制体上后实例化——接收方场景中无接收文本

(2) 也可以直接挂载到场景本来就存在的物体上——接收方场景中有一个接收文本

2、将发送方的脚本挂载到场景中的常驻物体上

(二)文本信息传递路线

以向场景中的文本中传输信息为例

目的:使  "通过变量“str”传输 "这段文字在场景中的 Text (TMP)上显现出来

传递路线

从发送方(Sender.cs)开始:

1. Start方法中用 str装载 "通过变量“str”传输 "这段文字

2. 调用TransferTitleText();方法,并将 str作为参数传递给这个方法。

3. 后面的直接上图吧——这是发送方脚本路线

到接收方(Recipients.cs)结束:

二、实例

(一)实例1——接收方有一个文本,用于显示接收的信息

接收方:

1、UI-Text TextMeshPro,名字自取。如:TitleText

2、给TitleText添加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{TitleText.text = titleText;//在TitleText.text文本中显示接收到的文本内容}
}

3、回到Unity,赋值

发送方:

1、给Canvas添加sender.cs组件

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Sender : MonoBehaviour
{public Recipients titleText;void Start(){if (titleText == null){titleText = new Recipients();}CreateTitleText();}public void CreateTitleText(){Recipients t = titleText;t.initData("传递方"); }
}

2、回到Unity,赋值

(二)实例2——在接收方实例化一个文本,文本中显示接收的信息

接收方:
1、UI-Text TextMeshPro,名字自取。如Text (TMP)
2、为Text (TMP)添加Recipients.cs
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;public class Recipients : MonoBehaviour
{public TextMeshProUGUI TitleText;public void initData(string titleText)//初始化节点的数据(类型是String;名字是titleText)//把接收到的文本命名为titleText//初始化节点的数据,接收一个字符串类型的参数titleText作为标题文本{//使用接收到的文本titleText更新TitleText文本组件的内容TitleText.text = titleText;//将TitleText文本组件的内容设置为接收到的titleText(在TitleText.text文本中显示接收到的文本内容)}}
3、回到Unity赋值
4、将Text (TMP)制成预制体,删除Hierarchy面板上的Text (TMP)
发送方:
1、给Canvas添加 Sender.cs组件
2、打开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 updatevoid Start(){CreateTitleText();}public void CreateTitleText(){Recipients t = Instantiate(titleText, this.transform);//创建一个titleText预制体的实例,并将这个实例赋值给变量t//titleText:要实例化的预制体;this.transform:新实例将作为当前对象(脚本所挂载的物体)的子对象//调用Recipients.cs实例上的initData方法,并传递一个字符串参数t.initData("传递方"); //t:titleText预制体实例;//t.initData();:调用预制体本身携带的公开的方法(在Recipients脚本中创建的方法)//括号内要写类型与接收方要求的相同的数据}
}
3、回到Unity,赋值

这篇关于在两个脚本之间传输文本信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064620

相关文章

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

UE3脚本UnrealScript UC语法点滴

持续更新 目录 类定义修饰符  1.dependson(CLASSNAME) 2.config(ININAME) 3.native 4.notplaceable 5.inherits(CLASSNAME1[,CLASSNAME2,...]) 类对象实例创建 类默认属性设置 变量 1.声明 var local 2.修饰符 config  3.array 类型变量 以及

通过高德api查询所有店铺地址信息

通过高德api查询所有店铺地址电话信息 需求:通过高德api查询所有店铺地址信息需求分析具体实现1、申请高德appkey2、下载types city 字典值3、具体代码调用 需求:通过高德api查询所有店铺地址信息 需求分析 查询现有高德api发现现有接口关键字搜索API服务地址: https://developer.amap.com/api/webservice/gui

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别

转发来源:https://swift.ctolib.com/ooooverflow-chinese-ocr.html chinese-ocr 基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别 环境部署 sh setup.sh 使用环境: python 3.6 + tensorflow 1.10 +pytorch 0.4.1 注:CPU环境

Linux文本三剑客sed

sed和awk grep就是查找文本当中的内容,最强大的功能就是使用扩展正则表达式 sed sed是一种流编辑器,一次处理一行内容。 如果只是展示,会放在缓冲区(模式空间),展示结束后,会从模式空间把结果删除 一行行处理,处理完当前行,才会处理下一行。直到文件的末尾。 sed的命令格式和操作选项: sed -e '操作符 ' -e '操作符' 文件1 文件2 -e表示可以跟多个操作

剑指offer(C++)--和为S的两个数字

题目 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 class Solution {public:vector<int> FindNumbersWithSum(vector<int> array,int sum) {vector<int> result;int len = array.size();if(

剑指offer(C++)--两个链表的第一个公共结点

题目 输入两个链表,找出它们的第一个公共结点。 解法一 两个链表一定有交点的话,方法是指向短链表指针先走完,然后指向长链表,指向长链表指针后走完,指向短链表。所以,第二次走过,一定会在交点相遇。 class Solution {public:ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {ListN

两个基因相关性CPTAC蛋白组数据

目录 蛋白数据下载 ①蛋白数据下载 1,TCGA-选择泛癌数据  2,TCGA-TCPA 3,CPTAC(非TCGA) ②蛋白相关性分析 1,数据整理 2,蛋白相关性分析 PCAS在线分析 蛋白数据下载 CPTAC蛋白组学数据库介绍及数据下载分析 – 王进的个人网站 (jingege.wang) ①蛋白数据下载 可以下载泛癌蛋白数据:UCSC Xena (xena

【青龙面板辅助】JD商品自动给好评获取京豆脚本

1.打开链接 开下面的链接进入待评价商品页面 https://club.jd.com/myJdcomments/myJdcomments.action?sort=0 2.登陆后执行脚本 登陆后,按F12键,选择console,复制粘贴以下代码,先运行脚本1,再运行脚本2 脚本1代码 可以自行修改评价内容。 var content = '材质很好,质量也不错,到货也很快物流满分,包装快递满