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

扫一扫,访问微社区

蛮牛译馆

关注:629

当前位置:游戏蛮牛 技术专区 蛮牛译馆

查看: 2140|回复: 27

[Unity教程] Unity C#实现对象的莫斯电码闪烁

[复制链接]  [移动端链接]
排名
8853
昨日变化
4

263

主题

301

帖子

1552

积分

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
159865
好友
9
蛮牛币
3981
威望
0
注册时间
2016-8-1
在线时间
626 小时
最后登录
2018-3-8

蛮牛译员

发表于 2017-9-29 14:29:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
Unity C#实现对象的莫斯电码闪烁


C#脚本设置对象在Morse Code的时间节奏下的Active / Inactive【闪烁】,如下所示:


Unity_C_Flashing_Object_In_Morse_Code.gif







[C#] 纯文本查看 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
// © 2017 TheFlyingKeyboard
// theflyingkeyboard.net
public class FlashInMorseCode : MonoBehaviour {
    [SerializeField] private float dotTime;
    [SerializeField] private GameObject objectToUse;
    [SerializeField] private bool flashOnStart = false;
    [SerializeField] private bool repeat = false;
    [TextAreaAttribute(4, 15)]
    [SerializeField] private string textToShow;
    private float dashTime;
    private char[] letters = { ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };
    private string[] morseLetters = { "    ", ". ___", "___ . . .", "___ . ___ .", "___ . .", ".", ". . ___ .", "___ ___ .", ". . . .", ". .", ". ___ ___ ___", "___ . ___", ". ___ . .", "___ ___", "___ .", "___ ___ ___", ". ___ ___ .", "___ ___ . ___", ". ___ .", ". . .", "_", ". . ___", ". . . ___", ". ___ ___", "___ . . ___", "___ . ___ ___", "___ ___ . .", ". ___ ___ ___ ___", ". . ___ ___ ___", ". . . ___ ___", ". . . . ___", ". . . . .", "___ . . . .", "___ ___ . . .", "___ ___ ___ . .", "___ ___ ___ ___ .", "___ ___ ___ ___ ___" };
    private void Start()
    {
        if (flashOnStart)
        {
            StartCoroutine(Flash(objectToUse, textToShow, dotTime));
        }
    }
    private IEnumerator Flash(GameObject objectToFlash, string textToConvert, float timeOfDot)
    {
        string textInMorse = "";
        ConvertTextToMorseCode(textToConvert, out textInMorse);
        for (int i = 0; i < textInMorse.Length; i++)
        {
            if (textInMorse[i] == ' ')
            {
                objectToFlash.SetActive(false);
                yield return 0;
                yield return new WaitForSeconds(timeOfDot);
            }
            else if (textInMorse[i] == '.')
            {
                objectToFlash.SetActive(true);
                yield return 0;
                yield return new WaitForSeconds(timeOfDot);
            }
            else if(textInMorse[i] == '_')
            {
                objectToFlash.SetActive(true);
                yield return 0;
                yield return new WaitForSeconds(timeOfDot * 3.0f);
            }
            if (repeat)
            {
                if(i == textInMorse.Length - 1)
                {
                    i = 0;
                }
            }
        }
    }   
    private void ConvertTextToMorseCode(string textToConvert, out string convertedText)
    {
        convertedText = "";
        textToConvert = textToConvert.ToLower();
        for (int i = 0; i < textToConvert.Length; i++)
        {
            for (short j = 0; j < 37; j++)
            {
                if (textToConvert[i] == letters[j])
                {
                    convertedText += morseLetters[j];
                    convertedText += "   ";
                    break;
                }
            }
        }
    }
    public void WriteText(GameObject newObject = null, string newTextToShow = null, float newDotTime = -1.0f)
    {
        if (newObject != null && newTextToShow != null && newDotTime > 0.0f)
        {
            StartCoroutine(Flash(newObject, newTextToShow, newDotTime));
            return;
        }
        if (newObject != null && newTextToShow != null)
        {
            StartCoroutine(Flash(newObject, newTextToShow, dotTime));
            return;
        }
        if (newObject != null && newDotTime > 0.0f)
        {
            StartCoroutine(Flash(newObject, textToShow, newDotTime));
            return;
        }
        if (newTextToShow != null && newDotTime > 0.0f)
        {
            StartCoroutine(Flash(objectToUse, newTextToShow, newDotTime));
            return;
        }
        if (newTextToShow != null)
        {
            StartCoroutine(Flash(objectToUse, newTextToShow, dotTime));
            return;
        }
        if (newDotTime > 0.0f)
        {
            StartCoroutine(Flash(newObject, textToShow, newDotTime));
            return;
        }
    }
}














原文标题:Unity C# Flashing Object In Morse Code
原文链接:https://www.unrealengine.com/en-US/blog/how-to-add-global-shaders-to-ue4



回复

使用道具 举报

7日久生情
3448/5000
排名
1628
昨日变化
5

0

主题

1998

帖子

3448

积分

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

UID
94526
好友
0
蛮牛币
1666
威望
0
注册时间
2015-4-22
在线时间
740 小时
最后登录
2018-5-24
发表于 2017-9-29 15:24:52 | 显示全部楼层
感谢楼主分享

回复

使用道具 举报

7日久生情
4048/5000
排名
3217
昨日变化
14

5

主题

3109

帖子

4048

积分

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

UID
209186
好友
5
蛮牛币
4907
威望
0
注册时间
2017-3-1
在线时间
530 小时
最后登录
2018-5-24
发表于 2017-9-29 16:02:40 | 显示全部楼层
学习收藏了

回复

使用道具 举报

6蛮牛粉丝
1301/1500
排名
2689
昨日变化
18

1

主题

480

帖子

1301

积分

Rank: 6Rank: 6Rank: 6

UID
220310
好友
1
蛮牛币
2216
威望
0
注册时间
2017-5-2
在线时间
346 小时
最后登录
2018-5-24
发表于 2017-9-29 16:04:53 | 显示全部楼层

回复

使用道具 举报

7日久生情
1693/5000
排名
2963
昨日变化
14

7

主题

695

帖子

1693

积分

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

UID
183904
好友
5
蛮牛币
3109
威望
0
注册时间
2016-11-15
在线时间
543 小时
最后登录
2018-5-24
QQ
发表于 2017-9-29 16:27:36 | 显示全部楼层

回复

使用道具 举报

6蛮牛粉丝
1050/1500
排名
4080
昨日变化
4

7

主题

176

帖子

1050

积分

Rank: 6Rank: 6Rank: 6

UID
144091
好友
0
蛮牛币
13
威望
0
注册时间
2016-3-31
在线时间
551 小时
最后登录
2018-5-24
QQ
发表于 2017-9-29 17:13:01 | 显示全部楼层
感谢楼主分享
[发帖际遇]: zhanbufeiyun 捡了钱没交公 蛮牛币 降了 3 . 幸运榜 / 衰神榜

回复

使用道具 举报

7日久生情
2080/5000
排名
3576
昨日变化
4

7

主题

1092

帖子

2080

积分

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

UID
168159
好友
4
蛮牛币
6059
威望
0
注册时间
2016-9-12
在线时间
613 小时
最后登录
2018-5-24
发表于 2017-9-30 10:37:11 | 显示全部楼层
看似很厉害  然而并没有看懂 哈哈哈、、

回复 支持 反对

使用道具 举报

7日久生情
2533/5000
排名
3328
昨日变化
2

2

主题

1780

帖子

2533

积分

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

UID
241666
好友
0
蛮牛币
10193
威望
0
注册时间
2017-9-6
在线时间
360 小时
最后登录
2018-5-23
发表于 2017-10-6 06:31:58 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

排名
28540
昨日变化
12

0

主题

34

帖子

60

积分

Rank: 2Rank: 2

UID
149158
好友
0
蛮牛币
122
威望
0
注册时间
2016-5-19
在线时间
17 小时
最后登录
2018-5-21
发表于 2017-10-10 16:21:37 | 显示全部楼层
收藏了,摩斯电码

回复

使用道具 举报

6蛮牛粉丝
1301/1500
排名
2689
昨日变化
18

1

主题

480

帖子

1301

积分

Rank: 6Rank: 6Rank: 6

UID
220310
好友
1
蛮牛币
2216
威望
0
注册时间
2017-5-2
在线时间
346 小时
最后登录
2018-5-24
发表于 2017-10-18 19:51:48 | 显示全部楼层
很酷

回复

使用道具 举报

7日久生情
1696/5000
排名
2441
昨日变化
2

0

主题

709

帖子

1696

积分

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

UID
148286
好友
0
蛮牛币
3530
威望
0
注册时间
2016-5-11
在线时间
471 小时
最后登录
2018-5-24
发表于 2017-10-24 14:17:15 | 显示全部楼层

回复

使用道具 举报

2初来乍到
146/150
排名
16649
昨日变化
7

3

主题

72

帖子

146

积分

Rank: 2Rank: 2

UID
254054
好友
0
蛮牛币
133
威望
0
注册时间
2017-11-13
在线时间
33 小时
最后登录
2018-1-26
发表于 2017-11-13 22:28:56 | 显示全部楼层

回复

使用道具 举报

3偶尔光临
273/300
排名
10066
昨日变化
7

17

主题

82

帖子

273

积分

Rank: 3Rank: 3Rank: 3

UID
244768
好友
1
蛮牛币
2485
威望
0
注册时间
2017-9-19
在线时间
72 小时
最后登录
2018-5-19
发表于 2017-11-15 10:58:07 | 显示全部楼层

回复

使用道具 举报

排名
248
昨日变化
1

34

主题

853

帖子

3997

积分

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

UID
6108
好友
17
蛮牛币
4224
威望
0
注册时间
2013-10-22
在线时间
1210 小时
最后登录
2018-5-24

社区QQ达人七夕浪漫情人

QQ
发表于 2017-12-4 15:15:26 | 显示全部楼层
有这么无聊的人?

回复

使用道具 举报

7日久生情
2685/5000
排名
3010
昨日变化
9

0

主题

1888

帖子

2685

积分

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

UID
219676
好友
0
蛮牛币
2472
威望
0
注册时间
2017-7-12
在线时间
365 小时
最后登录
2018-5-24

活力之星

发表于 2017-12-11 11:52:23 | 显示全部楼层
谢谢分享

回复

使用道具 举报

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

本版积分规则

关闭

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

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