Unity敏感词屏蔽
来源:互联网 发布:color for mac 编辑:程序博客网 时间:2024/04/27 15:32
Unity敏感词屏蔽
分享一个之前自己写的小例子,我们知道广电关于应用程序的版号审核是
需要进行敏感词审核,所有应用程序中的文字都不能涉及到敏感词汇,所
以敏感词汇的处理是多数应用开发者都会遇到的一个问题,解决方法不尽
相同,在这里分享一下个人在Unity中的处理方法。
先说一下一些必要的知识:
关于Unity3D中的资源路径
Application.dataPath 此属性用于返回程序的数据文件所在文件夹的路径。例如在Editor中就是Assets了。
Application.streamingAssetsPath 此属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。放在Unity工程StreamingAssets文件夹中的资源发布后都可以通过这个路径读取出来。
Application.persistentDataPath 此属性用于返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。
Application.temporaryCachePath 此属性用于返回一个临时数据的缓存目录。
关于Unity3D中的WWW类
WWW类是一个Unity开发中非常常用到的工具类,主要提供一般Http、
Ftp、File访问的功能(其中我们使用到的是File,访问本地文件功能),以
及动态从网上下载图片、声音、视频Unity资源等。
首先,来看看要进行屏蔽的敏感词汇的处理,我们需要把敏感词汇(敏感
词汇文件可自行进行百度)放在一个txt文件里,并且将其另存为UTF8编
码格式,如图:
OK,完成之后,在Unity工程中新建一个名为StreamingAssets的文件夹,
把我们刚刚编辑好的txt文件拖到该文件夹下。
接下来,简单创建两个UI,一个为Image+text,另一个是InputFiled
其中的IntFiled将接受我们的输入,并进行敏感词汇检测。
创建一个C#脚本,名字随便起,挂在InputFiled下面。
代码如下:
using UnityEngine.UI;using System.IO;//首先,引入IO流命名空间和UI
string[] SentiWords = null;//定义一个接受文件内容的字符串数组
/// <summary>/// 使用一个协程来进行文件读取/// </summary>/// <returns></returns>IEnumerator LoadWWW() { WWW www; //不同平台下StreamingAssets的路径是不同的,这里需要注意一下。 if (Application.platform == RuntimePlatform.Android) { www = new WWW(Application.streamingAssetsPath + "/" + "SensitiveWords1.txt"); } else { www = new WWW("file://" + Application.streamingAssetsPath + "/" + "SensitiveWords1.txt"); } yield return www; if (!(www.Equals("") || www.Equals(null))) { Debug.Log(www.text); //将读取到的字符串进行分割后存储到定义好的数组中 SentiWords = www.text.Split('、'); } }
//在Start()函数中开启协程加载文件void Start () { StartCoroutine("LoadWWW"); //添加输入事件监听 transform.GetComponent<InputField>().onValueChanged.AddListener(OnValueChanged);}
/// <summary> /// 监听方法,该方法会在监测到输入值改变时被触发 /// </summary> /// <param name="t"></param> 参数为当前输入的值 public void OnValueChanged(string t) { if (SentiWords == null) return; foreach (string ssr in SentiWords) { if (t.Contains(ssr)) { if (!ssr.Equals("")) { Debug.Log("包含敏感词汇:" + ssr + ",需要进行替换"); string stt = transform.GetComponent<InputField>().text; int length = ssr.ToCharArray().Length; string s = ""; for (int i = 0; i < length; i++) s += "*"; Debug.Log(stt.Replace(ssr, s)); stt = stt.Replace(ssr, s); transform.GetComponent<InputField>().text = stt; } } // Debug.Log(ssr); } }> 这里需要说明的一点是string类中的静态方法Replace(sting oldValue, string newValue),该方法并不会改变原字符串的值,而是会返回一个替换后的字符串,参数oldValue和newValue的意义是返回值中原来包含的oldValue将会被替换为newValue,例如:> string str = "南京,北京";> string s = str.Replace("北京", "上海");> 这两句话执行之后,我们得到s的值为"南京,上海",而str的值并不会发生改变,依然是"南京,北京"。
OK,完成这些之后,来测试一下。。。
最后,附上Demo程序和源代码链接:
链接:http://pan.baidu.com/s/1kUL5szl 密码:9kpz
- Unity敏感词屏蔽
- 敏感词屏蔽
- C++ 敏感词屏蔽
- 【python】敏感词过滤/屏蔽
- 用 grep 实现敏感词屏蔽
- Java 利用DFA算法 屏蔽敏感词
- Java 利用DFA算法 屏蔽敏感词
- 屏蔽敏感词汇&KMP
- 屏蔽敏感词汇&KMP
- 敏感信息屏蔽工具
- Python屏蔽敏感字
- 游戏开发敏感词屏蔽的功能实现
- 语音识别屏蔽敏感词,饭局上用这样的硬件就不怕饭局门
- JS采用ActiveXObject实现用户在提交表单时屏蔽敏感词的功能
- DFA算法(游戏敏感字屏蔽)
- 通过过滤器进行敏感词汇的屏蔽
- 【Java基础Demo】敏感字屏蔽
- 敏感词,敏感词,敏感词
- 介绍四大接口及其实现类。
- powershell递归删除文件
- 基于时分复用的MAC协议
- spring中bean的新配置方式--工厂方法配置bean
- 康托展开
- Unity敏感词屏蔽
- 0926
- C# 插入排序
- Wewe带你看代码 --USACO Section1.1
- window.open()
- 网易笔试题:跳石板
- Android视频学习(二):数据存储与界面展示2
- 阿里云CentOS 7.1使用yum安装MySql5.6.24
- LeetCode----30. Substring with Concatenation of All Words(串联所有的words)