Unity3d如何实现自动滚动文本效果

Posted 樱花不再在海棠湾涮羊肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3d如何实现自动滚动文本效果相关的知识,希望对你有一定的参考价值。

       当我们在制作UI使用Text时,如果文本信息过长,有两种处理方式,一种是换行展示,另一种则是滚动展示,下面博主将给大家介绍如何制作自动滚动文本。

       第一步,创建一个Image(GameObject > UI > Image),可以看到出现了一个白色的框框,改变框框的尺寸,以便进行文本信息显示,接着在Image下创建一个Text(GameObject > UI > Iegacy > Text),改变Text的尺寸,长度超出Image尺寸或边界,可以将Image改为半透明,初始化文本信息“Success is the ability to go from one failure to another with no loss of enthusiasm.”,属性根据自己进行设置,如下图所示。

       第二步,为Image添加组件Mask,效果如上图,再添加组件Scroll Rect,进行设置如下图,将Text拖入,Horizontal是横向滚动,Vertical是纵向滚动,这里我们取消Vertical,Movement Type(下面会进行介绍)设置为Clamped(可拖拽,无弹性)。

       属性Movement Type介绍:

               Unrestricted:无限制,可任意拖拽,可超出文本边界。

               Elastic:可拖拽,有弹性,不可超出文本边界。

               Clamped:可拖拽,无弹性,不可超出文本边界。

       第三步,给Image贴代码,新建C#文件,重命名为TextController,双击打开cs文件,代码如下:

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

public class TextController : MonoBehaviour

    public ScrollRect rect;
    // Start is called before the first frame update
    void Start()
    
        rect = gameObject.GetComponent<ScrollRect>();//绑定组件
    

    // Update is called once per frame
    void Update()
    
        rect.horizontalNormalizedPosition += 0.08f * Time.deltaTime;//滚动速度
    

       以上,一个简单的自动文本滚动效果就做好了,运行即可。

       下面再给大家介绍下在博主的3d游戏项目案例(金山打字之生死时速)中如何控制滚动效果和玩家打字的速率同步,代码如下:

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

public class TextController : MonoBehaviour

    public ScrollRect rect;
    // Start is called before the first frame update
    void Start()
    
        rect = gameObject.GetComponent<ScrollRect>();
    

    // Update is called once per frame
    void Update()
    
        //rect.horizontalNormalizedPosition += 0.08f * Time.deltaTime;
    
    public void Run()
    
        rect.horizontalNormalizedPosition += 0.02f;//滚动频率
    

       在原文PlayerController.cs文件中判断是否按下字母函数下加入以下代码实现调用:

    if (index >= 9)//当敲第10个字母的时候,开始滚动
    
       runText.GetComponent<TextController>().Run();//调用函数
    

xml 自动滚动文本视图textview跑马灯效果

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:scrollHorizontally="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit ="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:text="Hello Android.. I am android developer and developing this auto scroll text view via XML." />
        
        xml没有设置select 属性 代码里面设置select属性 就可以实现跑马灯效果

以上是关于Unity3d如何实现自动滚动文本效果的主要内容,如果未能解决你的问题,请参考以下文章

unity3d实现广告滑动效果

[Unity3D]如何在文本上使用贴图

unity3D 如何能够在一个物体上面实现透明和反射两种效果 请高手回答 在下不胜感激。

如何在Unity3d开发中实现文字的渐隐效果

Unity3D 灵巧小知识点☀️ | Unity 中如何让 Toggle组件 实现多选一的效果

unity3d 如何动态寻路?