unity腳本入門
⑴ 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/
⑵ 學unity3d需要什麼基礎
可以給你推薦一些資料:
1、Unity 3D腳本編程:使用C#語言開發跨平台游戲
2、Unity 游戲開發
3、Unity 入門精要(名字不敢全打對,自己查查吧)
4、Unity 極世界
5、xxx學院的unityA計劃教程
其實untiy只是一款好用的游戲引擎,內容學下來再看還是不算多的,關鍵的是要自己動手去做去思考才能慢慢了解開發過程,基礎課程講的內容其實都是差不多的,都是在教使用原理跟C#語法,(NGUI、javascript、非Mecanim的動畫知識完全可以不去聽,unity5+及以下的也別看了,已經過時了)找個培訓機構的課程,跟著練習下來,可以說對unity的基本使用已經入門了。
到了提升實戰的階段,就要接觸一些高質量的學習資料才能最快的提升自己,因為這時候你已經有了一定的知識儲備對untiy引擎的使用也已經了解了,需要聽一些作者把多年開發經驗的精髓總結到一個實戰項目中或者代碼架構清晰有效的的課程,這種課程不用多,跟著學一兩部就非常必要有效了,好的甚至可以學兩三遍,其實自己學懂掌握一套厲害的架構基本上可以應對一切開發需求了。這時候其他的教程也可以挑著快速的看看,聽個大概就可以了,找裡面優秀的地方仔細思考思考記下來就可以了,本人是游戲開發愛好者,新入門的愛好者可以加百賭網盤好友焉豆派失陪,有時間可以免費分享資料,自己利用業余時間學習在線下學了好多課程了,最後刪了好多好多,因為真的深深的感覺到很多商業性質太強的教程就是浪費學習者寶貴的時間,講課前沒有想好思路,出了bug這里改改那裡改改,最後不報錯就行了,像這樣低質量的,就不建議有基礎的開發者再聽了。
⑶ 如何入門獨立游戲開發
你好:
我從unity的角度來談一下如何入門獨立游戲開發。
自己周圍有不少朋友自身都不是程序出身,但都想入門游戲開發。我有被詢問過,自己也是自學過來的,所以談一下自己的經驗。
根據答主的情況美術出身,並不推薦學習ue4,相對unity會更加容易上手。
unity勸退很多人的理由如下:
1.官方文檔全英文,界面全英文。不得不說中國unity真的麻瓜,不是我說,別人日本unity剛成立一年,就弄了一份全日文的官方文檔。看看中國unity成立多久了,都在做什麼,我不想吐槽了…
相對unreal4就有官方中文文檔,而且還有unity轉unreal4的快速上手文檔,還界面全中文…
2.unity在國內的應用范圍和普及程度比unreal4好太多。再加上unity在游戲行業的普及使用。所以有大量的培訓機構想分一杯羹。培訓機構你懂的,導致網上搜索unity得到的很多靠譜的學習信息被稀釋了。
3.unity網上第三方教學渠道質量層次不齊。例如游戲蠻牛,泰課,慕課等等。我這里羅列的還是國內相對名氣大的,質量還算不錯的學習平台。
層次不齊的原因有幾點:
教學視頻的講師口齒不清晰,還帶方言。
講師自身邏輯混亂,一個很簡單的東西聽的人雲里霧里的
講師拖延時間,強行湊時間。導致聽的人學習熱情受到打擊,講了20分鍾的東西。實際最多5分鍾的干貨。
中文教程缺乏系統性的靠譜的免費的學習教程。這個和大量培訓機構的湧入有關。
說了unity這么多的不好,我來說為什麼還是推薦unity的理由:
1.unity在國內的普及程度很高,還是有很多優秀的學習資料的,不過相對零散,需要整理。我會在下文給出我自己認為不錯的學習網站和學習資料和學習路線。
2.不管是unity還是unreal只要涉及到邏輯都是要寫代碼的。兩者沒有區別!!!
unity用的是c#語言,而unreal用的是c++語言。
c#比c++好學!!!
c#比c++好學!!!
c#比c++好學!!!
重要的事情說三遍!!!!!!!!
3.如果你用unity遇到問題,在網上不管是在中文環境下還是英文環境下尋求幫助會比unreal快一些。因為學unity的人多!!!
4.unity比unreal好學!!!!
正題開始!!!下面開始從unity的角度如何入門獨立游戲開發:分別從代碼,游戲引擎,美術,游戲設計角度來探討。
會從入門的角度來逐一分析。下面排版可能會比較亂,我最後會集中整理網址的。想看網址的可以直接跳最後。
代碼學習:
1.c#語言
因為是入門,所以只需要學會用c#來寫簡單的業務邏輯就可以了。不需要去學習什麼高大上的框架,熱更新方案和語言特性。
代碼的掌握是學習和實踐反復交互的過程!!!不是我現在抱著一本書啃就完事了。也不是我把一個游戲做出來我就掌握了XX語言.
c#基本語法學習途徑:
C# 教程 | 菜鳥教程www.runoob.com
菜鳥教程里的信息及其適合新手學習編程語言。即使編程一點不會也可以上手輕松學習。
這本書更多會設計到線性代數和簡單的幾何學相關的知識,這本書能夠很好得讓我們了解圖形學中得數學。網上有電子版可以直接搞到手,課後習題推薦做,不過有些題答案比較難找。
這本書我翻來覆去看了好幾遍了,強烈安利入門用。