协程屏蔽字库

这篇博客介绍了如何在Unity3D中利用Lua协程来实现敏感词过滤功能。通过读取文本文件获取敏感词列表,然后监听InputField的输入变化,当检测到输入含有敏感词时,自动替换为星号。该方法适用于Android和非Android平台。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.IO;


public class GoBehaviourScript : MonoBehaviour {


    string[] SentWords = null;
    ///<summary>
    ///协程读取文件
    ///</summary>
    IEnumerator LoadWWW()
    {
        WWW www;
        if (Application.platform == RuntimePlatform.Android)
        {
            www = new WWW(Application.streamingAssetsPath + "/" + "Senticaswords.txt");
        }
        else
        {
            www = new WWW("file://" + Application.streamingAssetsPath + "/" + "Senticaswords.txt");
        }
        yield return www;


        if(!(www.Equals("") || www.Equals(null)))
        {
            //Debug.Log(www.text);
            SentWords = www.text.Split('、');
        }
    }




    void Start()
    {
        StartCoroutine("LoadWWW");
        transform.GetComponent<InputField>().onValueChange.AddListener(OnValueChanged);
    }


    public void OnValueChanged(string t)
    {
        if(SentWords == null)
        {
            return;
        }


        foreach (string ssr in SentWords)
        {
            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);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值