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

扫一扫,访问微社区

蛮牛译馆

关注:605

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

查看: 1198|回复: 15

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

[复制链接]  [移动端链接]
排名
8375
昨日变化
5

263

主题

301

帖子

1534

积分

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

UID
159865
好友
9
蛮牛币
3979
威望
0
注册时间
2016-8-1
在线时间
626 小时
最后登录
2017-11-19

蛮牛译员

发表于 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日久生情
3065/5000
排名
2051
昨日变化
6

0

主题

1944

帖子

3065

积分

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

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

回复

使用道具 举报

7日久生情
3721/5000
排名
4267
昨日变化
22

5

主题

3083

帖子

3721

积分

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

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

回复

使用道具 举报

5熟悉之中
898/1000
排名
3708
昨日变化
22

0

主题

328

帖子

898

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

6蛮牛粉丝
1305/1500
排名
4294
昨日变化
18

7

主题

637

帖子

1305

积分

Rank: 6Rank: 6Rank: 6

UID
183904
好友
5
蛮牛币
2400
威望
0
注册时间
2016-11-15
在线时间
383 小时
最后登录
2018-1-18

迈向小康

QQ
发表于 2017-9-29 16:27:36 | 显示全部楼层

回复

使用道具 举报

5熟悉之中
939/1000
排名
4160
昨日变化
4

5

主题

153

帖子

939

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

7日久生情
1618/5000
排名
4131
昨日变化
25

7

主题

837

帖子

1618

积分

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

UID
168159
好友
3
蛮牛币
5139
威望
0
注册时间
2016-9-12
在线时间
490 小时
最后登录
2018-1-18

迈向小康锦衣玉食

发表于 2017-9-30 10:37:11 | 显示全部楼层
看似很厉害  然而并没有看懂 哈哈哈、、

回复 支持 反对

使用道具 举报

7日久生情
2066/5000
排名
4452
昨日变化
21

2

主题

1518

帖子

2066

积分

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

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

回复

使用道具 举报

排名
26938
昨日变化
19

0

主题

31

帖子

53

积分

Rank: 2Rank: 2

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

回复

使用道具 举报

5熟悉之中
898/1000
排名
3708
昨日变化
22

0

主题

328

帖子

898

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

6蛮牛粉丝
1458/1500
排名
2820
昨日变化
3

0

主题

637

帖子

1458

积分

Rank: 6Rank: 6Rank: 6

UID
148286
好友
0
蛮牛币
2968
威望
0
注册时间
2016-5-11
在线时间
395 小时
最后登录
2018-1-18

迈向小康

发表于 2017-10-24 14:17:15 | 显示全部楼层

回复

使用道具 举报

2初来乍到
142/150
排名
16656
昨日变化
11

3

主题

75

帖子

142

积分

Rank: 2Rank: 2

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

回复

使用道具 举报

3偶尔光临
226/300
排名
10470
昨日变化
2

17

主题

75

帖子

226

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

排名
262
昨日变化
1

34

主题

818

帖子

3675

积分

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

UID
6108
好友
16
蛮牛币
3952
威望
0
注册时间
2013-10-22
在线时间
1077 小时
最后登录
2018-1-18

社区QQ达人七夕浪漫情人

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

回复

使用道具 举报

6蛮牛粉丝
1111/1500
排名
6125
昨日变化
41

0

主题

789

帖子

1111

积分

Rank: 6Rank: 6Rank: 6

UID
219676
好友
0
蛮牛币
563
威望
0
注册时间
2017-7-12
在线时间
144 小时
最后登录
2018-1-18
发表于 2017-12-11 11:52:23 | 显示全部楼层
谢谢分享

回复

使用道具 举报

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

本版积分规则

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