❤❤Fungus新課程即將發布,快寫問卷拿優惠❤❤
顯示具有 unity5 標籤的文章。 顯示所有文章
顯示具有 unity5 標籤的文章。 顯示所有文章

2016年11月8日 星期二

Unity C# 程式心得分享 靜態類別

本教學系列絕非正統教學,但自我期許是趣味教學,裡面的中文變數只是為了教學使用,正式寫專案時還是建議使用英文變數,倘若各路高手發現內容有誤,煩請不吝指教以矯正視聽,感謝


using UnityEngine;
using System.Collections;

public class Girlfriend : MonoBehaviour
    {
    public class 人類
        {
        const string 永遠的女神 = "波多野結衣";//設定好之後就不能再修改(執行之後無法再修改)

        public void 說出我的女神 ( ) {
            Debug.Log ( 名字 + "表示:我的女神只有一個!" );
            Debug.Log ("那就是"+永遠的女神+"啊啊啊啊啊" );
            }

        public string 名字;
        public static bool 吃辣;//static 靜態屬性 牽一髮而動全身
      //public bool 吃辣; //動態屬性 因人而異

        public void 回答吃不吃辣 ( )
            {
            if ( 吃辣 == true )
                {
                Debug.Log ( 名字 + "表示:我吃辣" );
                }
            else
                {
                Debug.Log ( 名字 + "表示:我不吃辣" );
                }
            }

        public 人類 ( string 父母取的名字 )//構造器 或稱為 建構函式
            {
            名字 = 父母取的名字;
            }

        public void 在一起 ( 人類 對象 ) {
            Debug.Log ( "就在這個時候"+名字+"跟"+對象.名字+"天雷勾動地火, 怦怦碰碰動動,他們在一起了!");
            王大明的女朋友.自己 = 對象;
            Debug.Log ( 名字+"現在跟"+王大明的女朋友.自己.名字+"穩定交往中");
            }
        }

    static class 王大明的女朋友 {
        public static 人類 自己;
        public static string 男朋友 = "大明";
        }

    void Start ( )
        {
        人類 王大明 = new 人類 ( "大明" );//出生 同時取好名字
        人類 陳阿香 = new 人類 ( "阿香" );//出生 同時取好名字
        人類 張阿珠 = new 人類 ( "阿珠" );//出生 同時取好名字

        人類.吃辣 = false;

        王大明.回答吃不吃辣 ( );
        陳阿香.回答吃不吃辣 ( );

        // 王大明的女朋友 女朋友2 = new 王大明的女朋友 ( );

        // 女朋友1.名字 = "真真";
        // 女朋友2.名字 = "泥泥";

        // Debug.Log ( "王大明有兩個女友 叫做"+女朋友1.名字+"跟"+女朋友2.名字);
        // Debug.Log ( "王大明迷失在他的美夢裡 永遠醒不來了");

        王大明.在一起 ( 陳阿香);
        Debug.Log ( "相愛容易 相處難 他們兩個分手了");
        王大明.在一起 ( 張阿珠 );

        王大明.說出我的女神 ( );
        }

    }


2016年10月24日 星期一

Unity C# 程式心得分享-- 物件 類別 屬性 方法

本教學系列絕非正統教學,但自我期許是趣味教學,裡面的中文變數只是為了教學使用,正式寫專案時還是建議使用英文變數,倘若各路高手發現內容有誤,煩請不吝指教以矯正視聽,感謝


using UnityEngine;
using System.Collections;

public class NightMarketLife : MonoBehaviour {

    
    class 人類 {//什麼是人類
        public string 稱號;//屬性 (特徵)
        public int 胃容量 = 100;//屬性 (特徵)

        public void 報上大名 ( ) {//方法 (行為) 
            Debug.Log ( 稱號+"的大名你沒有聽過嗎 哇哈哈!");
            }

        public void 吃東西 (店家 某個店家 ) {
            int 剩餘胃容量 = 胃容量 - 20;
            某個店家.產品數量 -= 1;
            Debug.Log (稱號+"吃了一份"+某個店家.產品名 );
            Debug.Log ( 稱號 + "的胃容量剩下" + 剩餘胃容量+"%" );
            Debug.Log ( 某個店家.產品名+"的數量為"+某個店家.產品數量 );
            }
        }


    class 店家 {
        public string 店家名;//屬性
        public string 產品名;//屬性
        public int 產品數量;//屬性

        public void 吆喝 ( ) {//方法

            Debug.Log ( 店家名+"的老闆吆喝著:來喔 好吃的 "+產品名+" 裡面坐喔~");

            }

        }


 void Start () {

        人類 王大明 = new 人類 ( );//王大明出生了
        王大明.稱號 = "三重王識賢";
        王大明.報上大名 ( );//調用方法(行為)

        店家 臭豆腐店 = new 店家 ( );
        臭豆腐店.店家名 = "阿香臭豆腐";
        臭豆腐店.產品名 = "臭豆腐";
        臭豆腐店.產品數量 = 30;
        臭豆腐店.吆喝 ( );

        王大明.吃東西 ( 臭豆腐店 );

 }
 
 // Update is called once per frame
 void Update () {
 
 }
}




2016年10月18日 星期二

Unity C# 程式心得分享 for迴圈 while迴圈 loop





本教學系列絕非正統教學,但自我期許是趣味教學,裡面的中文變數只是為了教學使用,正式寫專案時還是建議使用英文變數,倘若各路高手發現內容有誤,煩請不吝指教以矯正視聽,感謝


using UnityEngine;
using System.Collections;

public class Love : MonoBehaviour {

 // Use this for initialization
 void Start () {
        //沿著愛心逆時針順序跑
        //              A      C
        for (int i=1; i<=4 ; i++ )
            {
            //B
            Debug.Log ("for情書傳給第"+i+"位同學");
            //B
            }
   
        //=============================
  
        int w = 1;
        while (w<=4)
            {
            Debug.Log ( "while情書傳給第" + w + "位同學" );
            w++;
            }
   
        //=============================
  
        int d = 1;
        do
            {
            Debug.Log ( "do while情書傳給第" + d + "位同學" );
            d++;
            }
        while (d<=4);
        }
 
 // Update is called once per frame
 void Update () { 
 }
}

2016年9月13日 星期二

Unity C# 程式心得分享 Custom Inspector 自訂檢視器 多個物件啟動關閉或改透明度




使用情境/需求:
(建議看影片比較好懂…)
編輯的時候希望看到全部的物件,正式玩遊戲的時候又希望關掉某些物件一開始不要啟動。同時這些物件若啟動之後會有圖片漸漸浮現的效果,所以這些正式玩遊戲時要關掉的物件同時也要改成全透明

效果

一鍵切換數個物件為透明與關閉狀態
一鍵切換數個物件為實色與啟動狀態
一鍵在場景裡選取數個物件,可以統一修改

為什麼需要自訂檢視器?
能躺著的話幹嘛要站著呢
省時間,省麻煩,加速開發時程

如何自訂檢視器
a.一個繼承自monobehaviour的c#腳本
b.還有繼承自Editor的c#腳本,同時要放在指名為Editor資料夾裡

快速鍵
Array的項目欄位可以按Shift+Delete 清空或刪除


Selector.cs (放在某個game object底下)


using UnityEngine;
using System.Collections;
using UnityEditor;

public class Selector : MonoBehaviour
    {
    public string 註解 = "註解";
    public GameObject [ ] 遊戲物件清單;

    public void 開啟物件 ( GameObject 項目 )
        {
        項目.SetActive ( true );
        }
    public void 開啟物件 ( GameObject [ ] 遊戲物件清單 )
        {
        foreach ( var 項目 in 遊戲物件清單 )
            {
            if ( 項目 != null )
                {
                開啟物件 ( 項目 );
                }
            }
        }

    public void 關閉物件 ( GameObject 項目 )
        {
        項目.SetActive ( false );
        }
    public void 關閉物件 ( GameObject [ ] 遊戲物件清單 )
        {
        foreach ( var 項目 in 遊戲物件清單 )
            {
            if ( 項目 != null )
                {
                關閉物件 ( 項目 );
                }
            }
        }

    public void 修改透明度 ( GameObject 項目 , float 透明度 )
        {
        SpriteRenderer 顏色渲染器 = 項目.GetComponent<SpriteRenderer> ( );
        Color 顏色 = 顏色渲染器.color;
        顏色.a = 透明度;
        顏色渲染器.color = 顏色;
        }

    public void 改透明 ( GameObject 項目 )
        {
        修改透明度 ( 項目 , 0 );
        }
    public void 改透明 ( GameObject [ ] 遊戲物件清單 )
        {
        foreach ( var 項目 in 遊戲物件清單 )
            {
            if ( 項目 != null )
                {
                改透明 ( 項目 );
                }
            }
        }

    public void 改實色 ( GameObject 項目 )
        {
        修改透明度 ( 項目 , 1 );
        }
    public void 改實色 ( GameObject [ ] 遊戲物件清單 )
        {
        foreach ( var 項目 in 遊戲物件清單 )
            {
            if ( 項目 != null )
                {
                改實色 ( 項目 );
                }
            }
        }

    public static void 選擇場景內物件 ( GameObject [ ] 遊戲物件清單 )
        {
        Selection.objects = 遊戲物件清單;
        }

    }


=======================
SelectorEditor.cs (要放到Editor資料夾裡, 不用放在某個game object底下)
using UnityEngine;
using System.Collections;
using UnityEditor;

[CustomEditor(typeof(Selector))]
public class SelectorEditor : Editor {
    public override void OnInspectorGUI ( )
        {
        Selector selector = ( Selector )target;
        DrawDefaultInspector();

        EditorGUILayout.BeginHorizontal();
        if ( GUILayout.Button("透明+關閉") )
            {
            selector.改透明 ( selector.遊戲物件清單);
            selector.關閉物件 ( selector.遊戲物件清單 );
            }
        if ( GUILayout.Button ( "實色+啟動" ) )
            {
            selector.改實色 ( selector.遊戲物件清單 );
            selector.開啟物件 ( selector.遊戲物件清單 );
            }
        EditorGUILayout.EndHorizontal ( );

        if ( GUILayout.Button("選擇以上物件") )
            {
            Selector.選擇場景內物件 ( selector.遊戲物件清單 );
            }

        }

    }

=======================
影片縮圖的素材:Designed by Freepik


2016年9月2日 星期五

Unity 好用小工具 整合Photoshop 的 Psd Importer 教學

Unity 大約2019版開始有內建官方PSD importer,只要在photoshop裡把檔案轉存為PSB格式,就可以直接拉到Unity裡並保留圖層關係。
注意是PSB格式才有效,不是PSD,雖然它叫做PSD importer...
官方說明 或搜尋 unity package psd importer
https://docs.unity3d.com/Packages/com.unity.2d.psdimporter@4.0/manual/index.html



===以下是舊版文章的備份 僅供參考======



youtube教學影片
https://youtu.be/0FcfV_DLn6c

Unity PSD匯入器  Unity PSD importer

簡介:
可保留Photoshop的PSD檔圖層階層關係並且匯入Unity裡面,省下大量重新排列與對齊圖檔的時間

測試用的PSD檔下載
https://drive.google.com/drive/folders/0B9pF8Hbq-lgVaTByaU0wTmVjVHc


注意:
Photoshop 的PSD檔不能有混合選項或調整圖層之類的附加效果
目前測試可以支援形狀圖層與智慧型圖層

轉換混合選項或圖層樣式為一般圖層:
在Photoshop裡存檔以後點擊影像-->複製,只複製合併圖層不要打勾,按確定, 原版檔案就可以關掉了(避免不小心覆蓋到原始檔案)

按住Ctrl不放可跳著點選想要合併的圖層,再按Ctrl + E 合併圖層
按住Shift不放可連線點選想要合併的圖層,再按Ctrl + E 合併圖層

(此時範例PSD檔裡可以整理愛心與箭頭圖層)


下載 PSD importer
(網路上有另一個同名的插件,為了避免抓錯檔,可以從這裡下載)
下載(ChemiKhazi版)
https://github.com/ChemiKhazi/UnityPsdImporter


安裝 PSD importer
開啟一個新的Unity專案,Assets 裡新建一個Editor資料夾(名稱要一樣),把剛下載好的Unity PSD importer壓縮檔裡,bin資料夾底下的PhotoShopImporter.dll放到Editor資料夾裡
(若無法直接丟進Editor資料夾,可先解縮放到桌面上以後再丟進去)

匯入整理好的PSD:
整理好的PSD先丟到Assets裡,再點滑鼠右鍵,選擇PSD Importer




A.轉換為一般物件
選擇爸爸資料夾,等同於Photoshop PSD檔裡的爸爸群組,點擊 Sprite Creation 裡的 Create 2D Sprites按鈕,爸爸會變成父物件,底下的各個圖層會變成子物件,同時保留位置與階層關係


B.轉換為Canvas UI物件
功能表:GameObject-->UI新建一個Canvas物件,Assets裡在要轉換的PSD檔點滑鼠右鍵,選擇PSD Importer,選擇爸爸資料夾,等同於Photoshop PSD檔裡的爸爸群組,點擊場景裡的Canvas物件,再點擊Sprite Creation裡的Create UI Images按鈕,爸爸群組會變成Canvas底下的物件,同時保留位置與階層關係

轉成UI之前要新建一個Canvas物件




Kevin MacLeod」創作的「Cold Funk - Funkorama」是根據「Creative Commons Attribution」(https://creativecommons.org/licenses/by/4.0/) 授權使用

Kevin MacLeod」創作的「Hackbeat」是根據「Creative Commons Attribution」(https://creativecommons.org/licenses/by/4.0/) 授權使用
影片縮圖的素材:Designed by Freepik

2016年8月29日 星期一

Unity 免程式 遊戲 製作 教學:《脫逃時光》



下載這個小遊戲:脫逃時光 (PC/Mac)

下載脫逃時光的遊戲素材


使用軟體  Unity 5     配合免費外掛 Fungus

遊戲製作時的其他小工具:

Qdir (這邊有我製作的教學影片)

Psd Importer 教學 Unity 整合 Photoshop 保留圖層關係

Unity C# 教學 自訂檢視器 多個物件啟動關閉或改透明度

第一篇影片教學

第二篇教學











================================


第0篇:腦力激盪與前置作業


一開始的準備工作是這樣的:

遊戲架構發想
先想好需要什麼條件才能破關,比方一道密碼,然後取得這個密碼需要哪些線索或道具,再慢慢推演這些道具或線索要如何取得,主要的架構都確定以後,最後才思考要增加哪些非破關要素,但是可以讓遊戲更好玩的周邊設定。

以脫逃時光為例就是破關需要一道密碼,而密碼需要從網頁裡取得,開啟網頁之前又需要一台可使用的相機才能觸發該功能,接著組裝相機又需要空相機與乾淨鏡頭,乾淨鏡頭由髒鏡頭清潔過後而取得,空相機與清潔劑等又有各自不同的取得方式。接著就是加入流程分支的功能,讓遊戲破關的途徑不只一種。

最後才加入一些有的沒的功能,像是點了箱子以後他會跟你抱怨不要一直點我,這並非破關的要件,但是我覺得會很有趣所以就放進去了


收集遊戲素材與整理
收集圖片材料的時候,考量到遊戲類型屬於密室脫逃的關係,使用到的圖片都是物品為主,而且基本上是現代房間風格,不是古代或科幻房間等很需要考究或創造科技物件的風格,所以素材都使用freepik的免費素材,選擇很多而且都是向量檔。最後才尋找剩下的物品圖片與整間商店圖片,並且使用免費檔案管理軟體Q-Dir來整理檔案,我遊戲做到後來的時候常需要在好幾個資料夾之間做檔案交換,這個能夠四分割畫面的檔案總管軟體可以省下很多時間,而且當你只有下班時間才能進行自已遊戲專案的時候,時間顯得特別寶貴。

音樂音效的話是遊戲幾乎完成的時候才找,在Freesound.org有很多免費音效,YouTube Audio Library裡也一堆分類好的免費音樂

如何激發靈感
至於靈感的來源,我認為靈感跟流星一樣,咻的一下就不見了,可遇不可求,所以平常我就有使用Evernote的習慣,這個筆記軟體有PC版,MAC版,也有Android與iOS版,申請一個帳號就可多裝置通用,常常很多靈感是突然看到什麼東西就想到的,這時候隨身攜帶的手機就可以打字保存成為筆記,或是某張照片,時間不夠或不熟悉打字的話也可以手寫便條拍起來或乾脆錄音,某天有空的時候再統一整理,總之工具跟程式都是死的,如何活用取決於個人,也許對你而言有更好收集靈感的方式,這裡只是提供我的方法給大家參考一下。

在Freepik搜尋關鍵字Room,找了現在遊戲中的主要房間場景,然後這張圖片我就轉到手機桌面做為捷徑,利用等紅綠燈或公車之類瑣碎時間時就打開看一下,多看幾次總會有想到新東西的時候,最好當下就記錄起來。



===== 遊戲官方網頁與免費下載 =====


2016年8月20日 星期六

回覆讀者:如何在Unity裡用Fungus顯示對話文字的時候,同時播放對應的語音

回覆讀者:如何在Unity裡用Fungus顯示對話文字的時候,同時播放對應的語音
Unity Fungus Tutorial:
How To Play Voice and Display Dialog In The Same Time With Fungus Plug-in in Unity



開新專案
Open a New Project

Ctrl+ 9 開啟資源商店 ,輸入Fungus下載這個插件 插件網址
Ctrl+9 Open asset store and search Fungus plugin to install

1.必備一個舞台
There must be a Stage
Tools-->Fungus-->Create-->Stage

2.必備一個角色
There must be a Character
Tools-->Fungus-->Create-->Character

3.必備一個flowchart
There must be a Flowchart
Tools-->Fungus-->Create-->Flowchart

4.開啟Flowchart視窗
Open Flowchart Window
Tools-->Fungus-->Flowchart Window

5.角色改名
rename the Character


6.點擊New Block 新增一個SayCommand對話指令
press New Block and add a SayCommand

7.SayCommand對話指令的角色指定為Character物件(Amy)
Assign the Character box to Character gameobject(Amy)

8.語音檔案指定到 voice Over Clip裡
同時輸入要顯示的對話文字 
Assign voice clip and input your dialog text


=====播出眾人回應的語音=====
=====optional: people's feedback in voice

9.新增一個PlaySound指令
add a new PlaySound Command


10.再新增兩三個,同時指定其他人的語音
然後Wait Until Finished不要打勾 ,兩個Play Sound的語音就會同時播放
而不是一個接一個播放
then duplicate it into two PlaySound Commands, and assign the rest voices
,then uncheck WaitUntilFinished box,that means these 2 PlaySound commands will be play in the same time, instead of one by one.

=============
下載專案Download The Project

2016年7月22日 星期五

Unity 教學 如何切換到手機平台與修改為直式畫面


1.File--> Build Settings 選擇Android 或iOS平台
2.Switch Platform 切換平台 ,這時候會轉換檔案
3.轉換到手機平台以後,可以關掉Build Settings 視窗
4.Game遊戲視窗裡可以調整解析度 有Portait字樣的都代表直式畫面




2016年7月16日 星期六

Unity 教學 如何安全地升級Fungus



升級之前記得要備份整個專案資料夾
升級之前記得要備份整個專案資料夾

什麼是Fungus?

詳情請看實驗(?)影片



摘要說明:
現有專案已安裝fungus 2版
從Assetstore資源商店下載fungus 3的話無法全部覆蓋fungus外掛檔案

所以我開一個新的專案
從資源商店下載fungus 3以後
開啟檔案總管

刪掉現有專案裡fungus 2的以下外掛資料夾
A.你的專案資料夾\Assets\Fungus
B.你的專案資料夾\Assets\FungusExamples


然後把新專案裡的fungus 3外掛檔案複製到現有專案裡

開啟後雖然會顯示一些錯誤訊息
但是重開專案以後就不再出現了
目前觀察中...

升級之前記得要備份整個專案資料夾


本文網址:Unity 教學 升級Fungus外掛插件

===影片縮圖使用到的背景===
Designed by Freepik
 

2016年6月28日 星期二

Unity 階層視窗自動排序物件 Unity 5 Hierarchy Auto-Sorting objects




===
有位熱心網友指出其實不用自己貼代碼
在Edit\preferences\General裡打勾Enable Alpha Numeric sorting
就可以自動照字母順序排列了

若您有逆向排序的需求 還是可以參考下面的做法
===
 開一個c#的程式腳本貼入下面的代碼 或直接下載放到assets裡
"Copy and paste the code below into your new c# script
or put this file  in the assets folder

===============================

using UnityEngine;
using UnityEditor;

public class A_to_Z : BaseHierarchySort
    {

    public override int Compare ( GameObject lhs , GameObject rhs )
        {
        if ( lhs == rhs )  return  0;
        if ( lhs == null ) return -1;
        if ( rhs == null ) return  1;

        return EditorUtility.NaturalCompare ( lhs.name , rhs.name );
        }
    }

public class Z_to_A : BaseHierarchySort
    {

    public override int Compare ( GameObject lhs , GameObject rhs )
        {
        if ( lhs == rhs )  return  0;
        if ( lhs == null ) return  -1;
        if ( rhs == null ) return 1;

        return EditorUtility.NaturalCompare ( rhs.name , lhs.name );
        }
    }


你的階層圖就會多出一個星星按鈕
Then your Hierarchy will appear a new star button

可選擇A to Z順向排序或選擇Z to A 逆向排序物件
You can choose sorting objects by A to Z or Z to A




2016年5月27日 星期五

遊戲資源分享

~ 本網頁定期更新  上次更新日期:2020-8-13 ~


=== 圖片 ===
有些標註是CC0授權的話,就代表不用付費,可以商業使用,也不需要標註素材來源,但是建議贊助捐款

SONNISS.COM上的音樂音效


GDC 2020 (約50GB)
https://sonniss.com/gameaudiogdc2020/

加點音樂  (付費)
有各種音樂授權的方案可以選擇
獨立遊戲開發者可以參考看看

incompetech免費音樂
https://incompetech.com/music/royalty-free/music.html


mobilegamegraphics手機遊戲素材網站
https://mobilegamegraphics.com/


=== 工具===
圖表工具Xmind軟體(免費+中文)
電腦玩物網站有專文介紹
在編寫多重分支,多重結局的劇情 大綱,或是工作分配表之類的會很好用


心智圖表工具比較與介紹
http://www.playpcesor.com/2015/06/mind-map-app-android-ios.html

ActivePresenter(免費+中文)螢幕錄影軟體
電腦玩物的專文介紹與下載,錄製宣傳影片的時候很好用!
個人覺得好遊戲還是需要好的行銷,才能讓更多人玩到你的遊戲,所以遊戲如果能跟時事結合並且跟內容融為一體,同時達到宣傳效果的話,這是最理想的情況了

靈感激發
Pintrest 可以搜尋很多優質圖片 激發靈感
https://www.pinterest.com/



===遊戲製作心得===

遊戲製作小技巧https://simonschreibt.de/game-art-tricks/

免費電子書
<<半路叛逃>> 遊戲製作心得
作者: 知名遊戲製作人-半路(鄭暐橋),製作過 邦妮早午餐、勾玉忍者等遊戲
雲端硬碟連結

澳洲雪梨獨立遊戲製作人的訪談

遊戲,從零開始--一位會計系學生的獨立遊戲製作獨白
主講者:新時代數位遊戲創辦人葉政暘(飯包)

方塊貓遊戲品牌創建辛酸史分享