纳金网
标题:
Unity3D虛擬互動之公告板顯示-Faye Euler
[打印本页]
作者:
faye euler
时间:
2012-10-31 16:39
标题:
Unity3D虛擬互動之公告板顯示-Faye Euler
本帖最后由 艾西格亚 于 2013-5-28 20:02 编辑
這次Faye為大家介紹的是在Unity3d中,逐字打印的效果,這種效果如果加上一種閃屏式是Image effect,就碉堡了,廢話不多說,先上效果圖
下面開始為大家介紹思路與方法:
首先程序開始運行時,我們先初始化一個GUStyle,為什麼要加GUIStyle呢,因為,如果不加GUIStyle的話,顯示出來的字體是不可以隨心改變大小和顏色的,更加談不上自動換行了
MyGUIStyle.wordWrap = ***e;
然後我們要初始話兩個string類型,Text是存放我們要打印的內容,Text裏面的內容賦值給word變量,然後清空Text自己,給個協同程序,在設定時間後開始執行打印方法,這個方法我們命名為TypeTexte,在C#裏面協同程序要加上IEnumerator,所以,有以下代碼:
word = Text;
Text = "";
yield return new WaitForSeconds (2);
StartCoroutine(TypeText ());
在這裡,Faye用OnGUI顯示打印文字,所以我們定義兩個GUI,其實GUI Box用來顯示我們的打印效果,這裡我們將我們的GUIStyle加上
GUI.Label (new Rect(100,75,250,250),"纳金网介绍:",MyGUIStyle);
GUI.Box (new Rect(100,120,300,400),Text,MyGUIStyle);
下面說說TypeText方法
TypeText方法中,faye用了一個String.ToCharArray()方法,作用是將word字符串拆分為字符到數組。然後在用一個循環,一個個加回到Text字符串中,然後播放聲音。播放完聲音後,又用一個WaitForSeconds協同程序做等待,目的是分開每次字符間的打印時間。Faye再啰嗦下,在C#裏面協同程序要加上IEnumerator
IEnumerator TypeText () {
char[] s = word.ToCharArray();
for (int i = 0; i < s.Length; i++)
{
this.Text += s
.ToString();
if (sound)
{
audio.PlayOneShot (sound);
}
yield return new WaitForSeconds (letterPause);
}
}
完整代碼如下:
using UnityEngine;
using System.Collections;
public class typewriting : MonoBehaviour {
public float letterPause = 0.2f;
public AudioClip sound;
public string word;
public string Text= "纳金网倡导交互式3D电子商务,以用户体验和市场需求为发展导向,以技术创新提升产品竞争力,面向制造商、经销商和专业人士等不同的目标群体,结合互联网推出简单交互式3D展示和复杂交互式3D展示";//你希望打字机效果输出的字
public GUIStyle MyGUIStyle;
// Use this for initialization
IEnumerator Start () {
MyGUIStyle.wordWrap = ***e;
word = Text;
Text = "";
yield return new WaitForSeconds (2);
StartCoroutine(TypeText ());
}
void OnGUI () {
GUI.Label (new Rect(100,75,250,250),"纳金网介绍:",MyGUIStyle);
GUI.Box (new Rect(100,120,300,400),Text,MyGUIStyle);
}
IEnumerator TypeText () {
char[] s = word.ToCharArray();
for (int i = 0; i < s.Length; i++)
{
this.Text += s
.ToString();
if (sound)
{
audio.PlayOneShot (sound);
}
yield return new WaitForSeconds (letterPause);
}
}
}
將這個代碼掛到一個物體上,這裡faye把代碼掛在相機上,記得相機上面要加AudioScource組件哦。否則會報錯。
如果覺得字體不夠大的話,記得改GUIStyle下面的FontSize屬性
大功完成,看著自己一步步做完的作品,是否很有自豪感呢
本文由Faye個人原創,納金網和Faye共同擁有使用權,未經允許轉載保留追究法律責任權利。
作者:
比巴卜
时间:
2012-10-31 16:44
作者:
狂风大尉
时间:
2012-10-31 16:49
很有意思的效果啊,学习学习
作者:
菜鸟
时间:
2012-11-4 02:17
讲的蛮细致的 以前找的资料都是一知半解的 做不出成品没有成就感 现在有成就感了 真好
作者:
小丑龟
时间:
2012-11-4 11:10
蛮炫的效果,学习学习
作者:
烟雨
时间:
2012-12-31 20:22
有些不太明白,这个案例会用在什么地方?
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者:
雅雅
时间:
2013-1-20 12:33
学习了,虽然还在摸索
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者:
走四方
时间:
2013-5-28 17:31
感谢楼主分享!!!!!!!
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5