开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:501

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 287|回复: 11

[脚本] 对话系统的相关问题

[复制链接]  [移动端链接]
3偶尔光临
174/300
排名
11753
昨日变化

9

主题

54

帖子

174

积分

Rank: 3Rank: 3Rank: 3

UID
87064
好友
2
蛮牛币
391
威望
0
注册时间
2015-3-30
在线时间
61 小时
最后登录
2018-2-8
发表于 2018-2-6 23:21:13 | 显示全部楼层 |阅读模式
40蛮牛币
我想要做个对话系统
1、字幕可滚动进行播放内容。
2、当一串文字播放完毕后可点击“继续”按钮继续播放下一段文字
3、封装该方式, 只需要传入string[] 或其他的组 就可以把播放的文字全部录入进去了。


希望以代码UGUI的形式写出来。

谢谢了!

另外有个小疑问:如何引用其他类的协程?

回复

使用道具 举报

排名
23480
昨日变化
4

0

主题

15

帖子

67

积分

Rank: 2Rank: 2

UID
143473
好友
0
蛮牛币
162
威望
0
注册时间
2016-3-25
在线时间
20 小时
最后登录
2018-2-9
发表于 2018-2-6 23:21:14 | 显示全部楼层
本帖最后由 MaxSong 于 2018-2-7 17:18 编辑

给textUI;nextBtn;这两个变量赋值就可以了,封装自己弄吧(我不会hhh)。
顺便还有引用其他类的协程,也在里了
[C#] 纯文本查看 复制代码
using System.Collections;
using UnityEngine;
using UnityEngine.UI;

public class TextDisplay : MonoBehaviour {
    public static TextDisplay Running;
    public Text textUI;
    public Button nextBtn;
    private float m_textWaitTime = 0.05f;
    public static bool Displaying = false;//正在显示中
    void Awake() {
        Running = this;
        nextBtn.onClick.AddListener(delegate() {
            nextBtn.gameObject.SetActive(false);
        });        nextBtn.gameObject.SetActive(false);
    }
    void Start() {
        //调用方法
        string[] str = new string[3] { 
            "字幕可滚动进行播放内容。", 
            "当一串文字播放完毕后可点击“继续”按钮继续播放下一段文字", 
            "封装该方式, 只需要传入string[] 或其他的组 就可以把播放的文字全部录入进去了。" };
        TextDisplay.Display(str);
        //调用其他类的协同
        StartCoroutine((new OtherClass()).CCC());
    }
    public static void Display(string[] strs) {
        if(!Displaying) {//避免重复打印
            Running.StartCoroutine(Running.DisplayCoroutine(strs));
        }
    }
    IEnumerator DisplayCoroutine(string[] strs) {
        Displaying = true;
        WaitForSeconds wait = new WaitForSeconds(m_textWaitTime);//
        for(int i = 0; i < strs.Length; i++) {
            textUI.text = "";
            for(int j = 0; j < strs[i].Length; j++) {
                textUI.text += strs[i][j];
                yield return wait;
            }
            nextBtn.gameObject.SetActive(true);
            while(nextBtn.gameObject.activeSelf) {
                yield return null;
            }
        }
        Displaying = false;
    }
}

class OtherClass {
    public IEnumerator CCC() {
        yield return new WaitForSeconds(1);
        Debug.Log("等待1秒");
        yield return new WaitForSeconds(1);
        Debug.Log("又等待1秒");
    }
}




回复

使用道具 举报

排名
23480
昨日变化
4

0

主题

15

帖子

67

积分

Rank: 2Rank: 2

UID
143473
好友
0
蛮牛币
162
威望
0
注册时间
2016-3-25
在线时间
20 小时
最后登录
2018-2-9
发表于 2018-2-7 10:28:38 | 显示全部楼层
你是想要这种效果么
003.gif

回复

使用道具 举报

4四处流浪
364/500
排名
5784
昨日变化
2

0

主题

33

帖子

364

积分

Rank: 4

UID
68132
好友
3
蛮牛币
1132
威望
0
注册时间
2015-1-13
在线时间
153 小时
最后登录
2018-2-12
QQ
发表于 2018-2-7 10:32:23 | 显示全部楼层
想要的效果是关于播报的效果嘛?还是要InputFile 输入文字。如果你只是播报的话,获取到当前字符串文字长度,给个间隔时间,一个一个输出就好了

回复

使用道具 举报

4四处流浪
421/500
排名
7113
昨日变化
2

4

主题

132

帖子

421

积分

Rank: 4

UID
235098
好友
0
蛮牛币
592
威望
0
注册时间
2017-7-31
在线时间
137 小时
最后登录
2018-2-8
发表于 2018-2-7 12:06:20 | 显示全部楼层
滚动?不是打字效果嘛

回复

使用道具 举报

3偶尔光临
174/300
排名
11753
昨日变化

9

主题

54

帖子

174

积分

Rank: 3Rank: 3Rank: 3

UID
87064
好友
2
蛮牛币
391
威望
0
注册时间
2015-3-30
在线时间
61 小时
最后登录
2018-2-8
 楼主| 发表于 2018-2-7 13:02:21 | 显示全部楼层
MaxSong 发表于 2018-2-7 10:28
你是想要这种效果么

是的 就是要这种效果

回复

使用道具 举报

3偶尔光临
174/300
排名
11753
昨日变化

9

主题

54

帖子

174

积分

Rank: 3Rank: 3Rank: 3

UID
87064
好友
2
蛮牛币
391
威望
0
注册时间
2015-3-30
在线时间
61 小时
最后登录
2018-2-8
 楼主| 发表于 2018-2-7 13:04:03 | 显示全部楼层
碎心775825 发表于 2018-2-7 10:32
想要的效果是关于播报的效果嘛?还是要InputFile 输入文字。如果你只是播报的话,获取到当前字符串文字长度 ...

DEMO代码

回复

使用道具 举报

3偶尔光临
174/300
排名
11753
昨日变化

9

主题

54

帖子

174

积分

Rank: 3Rank: 3Rank: 3

UID
87064
好友
2
蛮牛币
391
威望
0
注册时间
2015-3-30
在线时间
61 小时
最后登录
2018-2-8
 楼主| 发表于 2018-2-7 17:02:34 | 显示全部楼层
MaxSong 发表于 2018-2-7 14:00
给textUI;nextBtn;这两个变量赋值就可以了,封装自己弄吧(我不会hhh)。
顺便还有引用其他类的协程,也在 ...

谢谢咯,   我试了下, 你定义的那三段话是自动滚动完了的,  我要的是播放第一段点击按钮播放下一段文字。
我目前就困惑的就是这方面,不知道怎么去控制他播放一段文字后操作一次播放下一段文字。

回复

使用道具 举报

排名
23480
昨日变化
4

0

主题

15

帖子

67

积分

Rank: 2Rank: 2

UID
143473
好友
0
蛮牛币
162
威望
0
注册时间
2016-3-25
在线时间
20 小时
最后登录
2018-2-9
发表于 2018-2-7 17:13:04 | 显示全部楼层
本帖最后由 MaxSong 于 2018-2-7 17:17 编辑
a329336057 发表于 2018-2-7 17:02
谢谢咯,   我试了下, 你定义的那三段话是自动滚动完了的,  我要的是播放第一段点击按钮播放下一段文字 ...

我想起来了,,,需要把nextBtn开始设置隐藏,我改下代码,你再试试。。。

回复

使用道具 举报

3偶尔光临
174/300
排名
11753
昨日变化

9

主题

54

帖子

174

积分

Rank: 3Rank: 3Rank: 3

UID
87064
好友
2
蛮牛币
391
威望
0
注册时间
2015-3-30
在线时间
61 小时
最后登录
2018-2-8
 楼主| 发表于 2018-2-7 20:38:38 | 显示全部楼层
MaxSong 发表于 2018-2-7 17:13
我想起来了,,,需要把nextBtn开始设置隐藏,我改下代码,你再试试。。。 ...

怎么样  行不行   我这边还是没搞出来~~~~

回复

使用道具 举报

排名
23480
昨日变化
4

0

主题

15

帖子

67

积分

Rank: 2Rank: 2

UID
143473
好友
0
蛮牛币
162
威望
0
注册时间
2016-3-25
在线时间
20 小时
最后登录
2018-2-9
发表于 2018-2-8 08:51:36 | 显示全部楼层
a329336057 发表于 2018-2-7 20:38
怎么样  行不行   我这边还是没搞出来~~~~

上边的代码我已经改过了,你重新复制就行了啊
[发帖际遇]: MaxSong 乐于助人,奖励 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

4四处流浪
326/500
排名
6703
昨日变化

0

主题

58

帖子

326

积分

Rank: 4

UID
236305
好友
0
蛮牛币
458
威望
0
注册时间
2017-8-7
在线时间
108 小时
最后登录
2018-2-22
发表于 2018-2-9 09:53:31 | 显示全部楼层
学习学习 666~~~

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

站长推荐 上一条 /1 下一条

快速回复 返回顶部 返回列表