找回密码
 注册帐号

扫一扫,访问微社区

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

29
回复
5439
查看
[ 复制链接 ]
排名
9778
昨日变化

263

主题

301

帖子

1602

积分

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日久生情
4225/5000
排名
1028
昨日变化

0

主题

2067

帖子

4225

积分

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

UID
94526
好友
0
蛮牛币
2528
威望
0
注册时间
2015-4-22
在线时间
1094 小时
最后登录
2019-10-14
2017-9-29 15:24:52 显示全部楼层
感谢楼主分享
回复

使用道具 举报

7日久生情
4409/5000
排名
2320
昨日变化

5

主题

3109

帖子

4409

积分

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

UID
209186
好友
5
蛮牛币
1181
威望
0
注册时间
2017-3-1
在线时间
684 小时
最后登录
2019-10-14
2017-9-29 16:02:40 显示全部楼层
学习收藏了
回复

使用道具 举报

6蛮牛粉丝
1356/1500
排名
2949
昨日变化

2

主题

493

帖子

1356

积分

Rank: 6Rank: 6Rank: 6

UID
220310
好友
1
蛮牛币
2295
威望
0
注册时间
2017-5-2
在线时间
361 小时
最后登录
2019-4-25
2017-9-29 16:04:53 显示全部楼层
回复

使用道具 举报

7日久生情
2395/5000
排名
1634
昨日变化

7

主题

744

帖子

2395

积分

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

UID
183904
好友
6
蛮牛币
5721
威望
0
注册时间
2016-11-15
在线时间
840 小时
最后登录
2019-9-26
QQ
2017-9-29 16:27:36 显示全部楼层
回复

使用道具 举报

6蛮牛粉丝
1430/1500
排名
4393
昨日变化

12

主题

218

帖子

1430

积分

Rank: 6Rank: 6Rank: 6

UID
144091
好友
0
蛮牛币
8
威望
0
注册时间
2016-3-31
在线时间
866 小时
最后登录
2019-10-14
QQ
2017-9-29 17:13:01 显示全部楼层
感谢楼主分享
回复

使用道具 举报

7日久生情
2789/5000
排名
2102
昨日变化

13

主题

1169

帖子

2789

积分

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

UID
168159
好友
6
蛮牛币
6536
威望
0
注册时间
2016-9-12
在线时间
936 小时
最后登录
2019-10-14
2017-9-30 10:37:11 显示全部楼层
看似很厉害  然而并没有看懂 哈哈哈、、
回复 支持 反对

使用道具 举报

7日久生情
2880/5000
排名
2524
昨日变化

2

主题

1849

帖子

2880

积分

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

UID
241666
好友
0
蛮牛币
10773
威望
0
注册时间
2017-9-6
在线时间
453 小时
最后登录
2019-1-31
2017-10-6 06:31:58 来自Mobile--- 显示全部楼层
感谢分享
回复

使用道具 举报

排名
31434
昨日变化

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蛮牛粉丝
1356/1500
排名
2949
昨日变化

2

主题

493

帖子

1356

积分

Rank: 6Rank: 6Rank: 6

UID
220310
好友
1
蛮牛币
2295
威望
0
注册时间
2017-5-2
在线时间
361 小时
最后登录
2019-4-25
2017-10-18 19:51:48 显示全部楼层
很酷
回复

使用道具 举报

7日久生情
2373/5000
排名
1621
昨日变化

0

主题

775

帖子

2373

积分

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

UID
148286
好友
0
蛮牛币
4054
威望
0
注册时间
2016-5-11
在线时间
798 小时
最后登录
2019-10-14
2017-10-24 14:17:15 显示全部楼层
回复

使用道具 举报

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

3

主题

72

帖子

146

积分

Rank: 2Rank: 2

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

使用道具 举报

4四处流浪
316/500
排名
10819
昨日变化

17

主题

91

帖子

316

积分

Rank: 4

UID
244768
好友
1
蛮牛币
3175
威望
0
注册时间
2017-9-19
在线时间
100 小时
最后登录
2019-9-25
2017-11-15 10:58:07 显示全部楼层
回复

使用道具 举报

排名
188
昨日变化

40

主题

927

帖子

4984

积分

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

UID
6108
好友
21
蛮牛币
6121
威望
0
注册时间
2013-10-22
在线时间
1703 小时
最后登录
2019-10-14

七夕浪漫情人

QQ
2017-12-4 15:15:26 显示全部楼层
有这么无聊的人?
回复

使用道具 举报

7日久生情
3884/5000
排名
1487
昨日变化

0

主题

2150

帖子

3884

积分

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

UID
219676
好友
1
蛮牛币
4368
威望
0
注册时间
2017-7-12
在线时间
880 小时
最后登录
2019-10-14

活力之星

2017-12-11 11:52:23 显示全部楼层
谢谢分享
回复

使用道具 举报

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

本版积分规则