游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:561

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

_____________________________________________________________________________________________________________
问答求助版块规则:

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

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

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

9

主题

54

帖子

194

积分

Rank: 3Rank: 3Rank: 3

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


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

谢谢了!

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

回复

使用道具 举报

2初来乍到
103/150
排名
20643
昨日变化
4

0

主题

25

帖子

103

积分

Rank: 2Rank: 2

UID
143473
好友
0
蛮牛币
212
威望
0
注册时间
2016-3-25
在线时间
36 小时
最后登录
2018-11-7
发表于 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秒");
    }
}




回复

使用道具 举报

2初来乍到
103/150
排名
20643
昨日变化
4

0

主题

25

帖子

103

积分

Rank: 2Rank: 2

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

回复

使用道具 举报

5熟悉之中
687/1000
排名
4016
昨日变化
2

0

主题

98

帖子

687

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

5熟悉之中
805/1000
排名
3936
昨日变化
4

4

主题

184

帖子

805

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

3偶尔光临
194/300
排名
12842
昨日变化
4

9

主题

54

帖子

194

积分

Rank: 3Rank: 3Rank: 3

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

是的 就是要这种效果

回复

使用道具 举报

3偶尔光临
194/300
排名
12842
昨日变化
4

9

主题

54

帖子

194

积分

Rank: 3Rank: 3Rank: 3

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

DEMO代码

回复

使用道具 举报

3偶尔光临
194/300
排名
12842
昨日变化
4

9

主题

54

帖子

194

积分

Rank: 3Rank: 3Rank: 3

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

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

回复

使用道具 举报

2初来乍到
103/150
排名
20643
昨日变化
4

0

主题

25

帖子

103

积分

Rank: 2Rank: 2

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

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

回复

使用道具 举报

3偶尔光临
194/300
排名
12842
昨日变化
4

9

主题

54

帖子

194

积分

Rank: 3Rank: 3Rank: 3

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

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

回复

使用道具 举报

2初来乍到
103/150
排名
20643
昨日变化
4

0

主题

25

帖子

103

积分

Rank: 2Rank: 2

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

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

回复

使用道具 举报

5熟悉之中
899/1000
排名
2969
昨日变化
18

1

主题

135

帖子

899

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

7日久生情
2696/5000
排名
641
昨日变化
4

30

主题

576

帖子

2696

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
124569
好友
25
蛮牛币
7116
威望
0
注册时间
2015-10-4
在线时间
798 小时
最后登录
2018-11-16
发表于 2018-2-27 14:57:22 | 显示全部楼层
学习下,66666666

回复

使用道具 举报

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

本版积分规则

关闭

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

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