當前位置:首頁 » 編程軟體 » 腳本製作時鍾

腳本製作時鍾

發布時間: 2023-06-06 02:54:37

『壹』 Unity C#入門教程——動畫時鍾實現

顯示當前時間的時鍾

為游戲對象創建層級關系

編寫腳本並與對象關聯

使用命名空間

使用方法更新游戲物體

按時間進行旋轉

在此教程中我們編寫一個簡單的C#腳本來製作時鍾指針動畫。

要求大家已經對Unity的編輯器有了基本的了解,其實,只需用過Unity幾分鍾就可以開始該案例了。

很快我們就能完成以下成果。

製作時鍾

不用任何Unity資源包,我們從0開始創建Unity工程。預設的場景中有一個位於 (0, 1, -10), 朝著z軸的負方向的攝像機,為了使攝像機中顯示的透視圖與場景一致,選擇攝像機,並在菜單中選擇執行 GameObject /* Align View*將攝像機與當前場景對齊。

啥是 游戲物體

子物體又是哈東東?

我們就簡單用立方體來製作時鍾的指針,為每個指針使用 GameObject/ Create Other / Cube 創建立方體。對於時針,設置其位置為 (0, 1, 0) ,三個軸上的縮放分別為 (0.5, 2, 0.5) .,對分針位置為 (0, 1.5, 0) ,縮放 (0.25, 3, 0.25) ,秒針的則分別是: (0, 2, 0)
**(0.1,4, 0.1)。
**

創建的時鍾,以及其中游戲物體間的層級關系。

製作時鍾指針動畫

要讓時鍾動起來,就得寫點腳本了。在工程視圖中右鍵,選擇 Create/ C# Script 新建一個C#腳本,將其命名為 ClockAnimator。 雙擊打開之,將其中內容清空,從空文件開始。

首先,我們要引用Unity的命名空間,接著就是定義 ClockAnimator 類。將其定義為一個公開的類,繼承自[MonoBehaviour]

using UnityEngine;

public class ClockAnimator : [MonoBehaviour]

}

神馬是命名空間?

類又是啥?

關於****[MonoBehaviour]****類?

這樣我們就創建了一個可以作為組件的最小的類。保存之,接著從 Project 窗口中把它直接拖放到 Hierarchy (層級)視圖的 Clock 游戲物體上,建立其與該游戲對象的關聯。當然,也可以使用 Clock 游戲物體的 Add Component 按鈕。

將ClockAnimator與Clock關聯

要讓指針動起來,我們得使用指針組件的 Transform 對象。首先,在剛才的腳本中為每個指針添加一個 Transform 變數,並保存它。這樣,這些公開變數就成為可在編輯器中被賦值的組件屬性,編輯器會獲得這些游戲物體的 Transform 組件,並將它們賦予這些變數,選擇 Clock ,將指針對應的游戲物體賦給這些屬性。

變數是什麼?

using UnityEngine;

public class ClockAnimator : [MonoBehaviour]{

}

為空的ClockAnimator屬性和填寫屬性後的ClockAnimator

下面在腳本中添加一個update方法。這是一個特殊的方法,它會在每一幀播放時調用,我們在這個方法中實現時鍾指針的旋轉。

using UnityEngine;

public class ClockAnimator : [MonoBehaviour]{

}

}

方法是啥?

[ Update ] 方法是否應當公開?

保存腳本,編輯器會提示組件中已經有了update方法,並在腳本組件的左側出現一個復選框,這樣我們就能禁用該腳本組件了,當然此時,還是要保持它處於可用狀態。

ClockAnimator更新的顯示了復選框

每個小時,時針要轉動360/12度;分鍾指針則是每分鍾轉動360/60度;而秒針是每秒旋轉360/60度。為了程序中使用方便,我們把這些值定義為私有的浮點常量。

using UnityEngine;

public class ClockAnimator : [MonoBehaviour] {

}

常量有什麼特殊性?

為了讓時鍾轉動起來,每次update時,我們先得到當前系統的時間。System命名空間中的[DateTime] 結構體 可以用來存儲時間,而該結構體中的靜態屬性Now可以返回當前時間,這樣,每次update時,我們就先得到該值並將其存儲到一個臨時變數中。

using UnityEngine;

using System;

public class ClockAnimator : [MonoBehaviour]{

}

什麼是結構體?

屬性又是什麼?

要讓指針轉動,就需要更新指針的旋轉,而這可以通過設置指針的localRotation實現。使用四元數:[Quaternion]可以定義任意角度的旋轉。

因為攝像機朝向是z軸,Unity使用的是左手坐標系統,因此指針應該是繞著Z軸負方向進行旋轉。

using UnityEngine;

using System;

public class ClockAnimator : [MonoBehaviour] {

}

時間顯示為12:44

四元數quaternion是什麼?

旋轉又是啥?

改進時鍾的實現

很好!在游戲的運行模式中,時鍾已經可以顯示當前的時間了,但是使用離散的時間值讓它看起來更像是一個電子鍾。下面增加一個選項,實現模擬時間顯示。在腳本中添加一個公開的布爾變數 analog ,用它來決定update方法中的顯示方式,這樣我們就能在編輯器中直接控制時鍾的顯示方式了,即使是在游戲運行時。

using UnityEngine;

using System;

public class ClockAnimator : [MonoBehaviour] {

}

添加了analog模式的ClockAnimator

對於模擬現實顯示的選項,我們使用和之前稍稍不同的方式。這次不用[DateTime].Now,我們用[DateTime].Now.TimeOfDay,這是一個時間段[TimeSpan]。返回的是自每天午夜開始到現在已經經過的小時,分鍾和秒數。由於這個值是雙精度數,使用時我們需要將它們轉換為float類型。

類型轉換的意思是

using UnityEngine;

using System;

public class ClockAnimator : [MonoBehaviour] {

}

按照模擬方式顯示的時鍾
現在時鍾也可以按模擬方式顯示了。
unitypackage PDF
**
****原文鏈接:
** http://catlikecoding.com/unity/tutorials/clock/

『貳』 怎樣用FLASH做一個會動的時鍾

具體步驟
1、 運行Flash MX 2004,新建影片剪輯,命名為「表盤」。進入編輯區繪制一條直線,單擊【窗口】|【設計面板】|【變形】命令,打開變形面板,添入旋轉角度為30度,拷貝並應用變形。按照同樣方法,繪制出其他分鍾的刻度。
2、 在背景層中我們添加三個動態文本框,變數名稱為:「weeks」,「days」和「timebox」。
3、 分別新建三個影片剪輯,命名為「時針」,「分針」,「秒針」。繪制三個指針的形狀。注意指針的中心點的位置。
4、 導入一段指針移動的模擬音樂。在聲音文件的連接屬性中選擇「為動作腳本導出」,命名為「sound」。
5、 新建一個影片剪輯,命名為「音樂」。在第1幀添加as:stop(); 第2幀插入空白關鍵幀,添加as:
ss = new Sound();
ss.attachSound("sound");
ss.start();
ss.onSoundComplete = function() {
ss.start();
}; //調用庫中的聲音文件sound
6、返回到場景1,把「表盤」影片剪輯拖放到舞台中,利用對齊面板使之處與舞台中央位置。
7、新建一個圖層,繪制一個中心點。同樣利用對齊面板使之處與中央位置。
8、新建三個圖層,分別放置「時針」,「分針」,「秒針」影片剪輯。注意,影片剪輯的中心點要與步驟6繪制的中心點重合。

1、 新建一個音樂層,把「音樂」影片剪輯放置在場景的任何位置。在下面的屬性面板中,命名為「777」。

2、 分別選擇「時針」,「分針」,「秒針」三個影片剪輯,在下面的屬性面板中分別命名為「hourpoints」,「minutepoints」和「secondpoints」。

3、 好了,准備工作已經完成了。下面我們添加AS。

4、 選中「表盤」影片剪輯,添加as語句:

onClipEvent (load) {
weekArray = new Array(』星期日』, 』星期一』, 』星期二』, 』星期三』, 』星期四』, 』星期五』, 』星期六』);//建立一個數組,共七個元素
timedate = new Date();//建立一個新的時間對象
}
onClipEvent (enterFrame) {
week = timedate.getDay();//返加0~6,0時取「星期日」;1時取「星期一」…….
weekday = weekArray[week];//從數組中讀取中文顯示,參看上一句的解釋
day = timedate.getDate();//當前的日期,返回值為1~31
hour = timedate.getHours();//當前的時,返回0~23
minute = timedate.getMinutes();當前的分,返回0~59
second = timedate.getSeconds();當前的秒,返回0~59
if (hour<10) {
hour = "0" + hour;//如果時小於10,前面顯示加「0」
}
if (minute<10) {
minute = "0" + minute;//同上
}
if (second<10) {
second = "0" + second;//同上
}
timebox = hour+" : "+minute+" : "+second;//顯示在動態文本框中
weeks = weekday;//同上一句
days = day;//同上一句
delete timedate;//刪除時間對象,目的是實時顯示時間
timedate = new Date();//新建時間對象
}

5、 選擇「時針」影片剪輯,添加as語句:

onClipEvent (enterFrame) {
hourangle = _root.clock.hour*30+_root.clock.minute/2;
//把鍾表符號中的時針對應的角度值賦值給變數「hourangle」
setProperty ("_root.hourpoints", _rotation, hourangle);
}//設置分針的旋轉角度

6、 選擇「分針」影片剪輯,添加as語句:

onClipEvent (enterFrame) {
minuteangle = _root.clock.minute*6;
//把鍾表符號中的分針對應的角度值賦值給變數「minuteangle」
setProperty ("_root.minutepoints", _rotation, minuteangle);
}//設置分針的旋轉角度

7、 選擇「秒針」影片剪輯,添加as語句:

onClipEvent (enterFrame) {
secondsangle = _root.clock.second*6;
//把鍾表符號中的秒針對應的角度值賦值給變數「secondsangle」
setProperty ("_root.secondpoints", _rotation, secondsangle);
}//設置秒針的旋轉角度

16、測試,保存。請參看源文件「時鍾」。

特別說明
要實現指針式雙歷鍾表,要掌握的知識包括:FLASH的日期型函數和變數的使用,文本框的設置,時間顯示的調整,數組的簡單應用,以及如何實時的、動態的顯示時間;最主要的是利用指針的角度與當前時間的函數關系,才能使時鍾准確的指示時間。從中可以看出,如果推理不出這個函數關系,就做不成。所以我們應該多學習一下,多練練自己的邏輯思維能力

『叄』 如何用易語言製作腳本

第一個問題:易語言的腳本,如果你說的指讓文件執行任務的代碼,你你雙擊那個就可以了
第二個問題:建立一個時鍾,設置周期(1秒=1000毫秒,)然後雙擊時鍾,輸入代碼:
模擬按鍵 (#回車鍵, , )
第三個問題:如果你是要按鍵後台的對某個窗口起作用的,就取它的窗口句柄

『肆』 ppt腳本怎麼畫

1、首先用flash做一個時鍾
新建一個flash文件,把第一個層命名為時鍾層,在第一幀添加一個靜態文本00:00:00。選中靜態文本,在屬性框中把靜態文本改為動態文本,並在變數框中填寫TimeText。新建一個層,命名為腳本層,在第一個幀中添加腳本如下:
newDate = new Date();
Cur_Hour = newDate.getHours();
if(length(Cur_Hour)<2) Cur_Hour="0"+Cur_Hour;
Cur_Minute=newDate.getMinutes();
if(length(Cur_Minute)<2) Cur_Minute="0"+Cur_Minute;
Cur_Second=newDate.getSeconds();
if(length(Cur_Second)<2) Cur_Second="0"+Cur_Second;
TimeText=Cur_Hour+":"+Cur_Minute+":"+Cur_Second;
在腳本層中新建空白關鍵幀,在新建幀中添加腳本:gotoAndPlay(1);
點擊Ctrl+Enter看看效果,導出swf文件。

2、把flash時鍾插入ppt中
把clock.swf文件放在ppt文件所在的目錄,打開ppt文件,點開視圖-母版-幻燈片母版,點視圖-工具欄-控制項工具箱-其他控制項-Shockwave flash object,選擇一個位置插入flash對象。點flash對象-屬性-自定義-影片url,寫上clock.swf,點確定。 地球你也可以用fish做

『伍』 做的FLASH鍾,載入了腳本,但分,秒,時針不動,哪位高手可以幫忙改下

針不動可以由很多原因造成,可能是new Date();沒有刷新,造成Date里數字不變,針的角度也不改變,還可能是其他動作沒有寫正確。具體得根據源程序來分析。
下面寫一個簡單的指針鍾表程序僅供參考:
首先先把原件准備好,在舞台上畫三個指針分別命名為"shi" "fen" "miao",(注意調整旋轉點)放到舞台後,在主時間軸內寫以下代碼:
_root.onEnterFrame=settime;//每幀執行函數
function settime(){
var myDate=new Date();//重新清空Date函數(這里不重新初始會造成指針不旋轉)
_second=myDate.getSeconds()*6;//獲得當前秒數,每一秒增加6度
_minute=myDate.getMinutes()*6;//獲得當前分數,每一分增加6度
_hour=myDate.getHours()*30;//獲得當前小時數,每一小時增加30度
_root.miao._rotation=_second;//將指針度數賦予每個指針
_root.fen._rotation=_minute;
_root.shi._rotation=_hour

}
如果還是不正確的話,可把源文件發到[email protected],在具體研究

熱點內容
海康威視監控密碼是多少位 發布:2025-02-12 12:20:29 瀏覽:584
安卓的自帶瀏覽器在哪裡 發布:2025-02-12 12:20:29 瀏覽:722
望海潮上傳 發布:2025-02-12 12:16:08 瀏覽:672
javathread源碼 發布:2025-02-12 12:12:37 瀏覽:907
整個伺服器搭建教程 發布:2025-02-12 11:48:16 瀏覽:579
我的世界伺服器人多的 發布:2025-02-12 11:48:12 瀏覽:347
為實現分頁存儲管理需要哪些硬體支持 發布:2025-02-12 11:46:34 瀏覽:539
編程下載線 發布:2025-02-12 11:41:48 瀏覽:210
json存儲數據 發布:2025-02-12 11:41:39 瀏覽:219
天龍八部腳本免費 發布:2025-02-12 11:30:12 瀏覽:501