天天看點

Unity 2018 Shaders and Effects Cookbook 3rd例子運作

運作Unity 2018 Shaders and Effects Cookbook 3rd随書源碼

  • ​​前言​​
  • ​​準備工作​​
  • ​​編譯書中源碼​​
  • ​​Unity2021版本中修改源代碼​​
  • ​​1.修改:SimpleActivatorMenu.cs檔案​​
  • ​​2.修改ForcedReset.cs檔案​​
  • ​​運作結果​​

前言

[下載下傳Unity 2018 Shaders and Effects Cookbook 3rd](https://github.com/PacktPublishing/Unity-2018-Shaders-and-Effects-Cookbook-Third-Edition)
   可以用git下載下傳,也可以直接下載下傳      

準備工作

1.下載下傳Unity

​​​Unity下載下傳和安裝​​​ 2. ​​下載下傳Unity 2018 Shaders and Effects Cookbook 3rd 源碼​​

編譯書中源碼

1.使用Unity打開書中源碼,本書作者也在官方給出了使用方法

Unity 2018 Shaders and Effects Cookbook 3rd例子運作

2. 點選“ Unity 2018 Shaders and”

Unity 2018 Shaders and Effects Cookbook 3rd例子運作

作者指導我們運作書中的第一個程式

D:\unity3d\book\Unity 2018 Shaders and Effects Cookbook\Unity-2018-Shaders-and-Effects-Cookbook-Third-Edition-master\Chapters 1-11\Unity Shaders and Effects\Assets\Chapter 01\Scenes

輕按兩下運作“Chapter 1 - Starting Point.unity”

Unity 2018 Shaders and Effects Cookbook 3rd例子運作

3.編譯錯誤

Unity 2018 Shaders and Effects Cookbook 3rd例子運作
Unity 2018 Shaders and Effects Cookbook 3rd例子運作

4.修改源碼

輕按兩下第一個錯誤,會自動打開你的vs2015~vs2019,看你機器上裝個哪個版本的vs,我這裡打開的是vs2019

Unity 2018 Shaders and Effects Cookbook 3rd例子運作

public GUIText camSwitchButton;      

改成

public UnityEngine.UI.Text camSwitchButton;      
Unity 2018 Shaders and Effects Cookbook 3rd例子運作

5.運作源碼

Unity 2018 Shaders and Effects Cookbook 3rd例子運作

Unity2021版本中修改源代碼

如果你使用的是Unity2021版本,按照前面的方法修改源碼依然報錯

Unity 2018 Shaders and Effects Cookbook 3rd例子運作
Assets\Chapter 01\Standard Assets\Utility\ForcedReset.cs(7,26): error CS0619: 'GUITexture' is obsolete: 'GUITexture has been removed. Use UI.Image instead.'      

1.修改:SimpleActivatorMenu.cs檔案

目錄:E:\Unity\book\Unity-2018-Shaders-and-Effects-Cookbook-Third-Edition\Unity-2018-Shaders-and-Effects-Cookbook-Third-Edition-master\Chapters 1-11\Unity Shaders and Effects\Assets\Chapter 01\Standard Assets\Utility

修改為:

using System;
using UnityEngine;
using UnityEngine.UI; //在此處添加


namespace UnityStandardAssets.Utility
{
    public class SimpleActivatorMenu : MonoBehaviour
    {
        // An incredibly simple menu which, when given references
        // to gameobjects in the scene
        //public GUIText camSwitchButton;
        //public UnityEngine.UI.Text camSwitchButton;
        public Text camSwitchButton; //在此處修改
        public GameObject[] objects;


        private int m_CurrentActiveObject;


        private void OnEnable()
        {
            // active object starts from first in array
            m_CurrentActiveObject = 0;
            camSwitchButton.text = objects[m_CurrentActiveObject].name;
        }


        public void NextCamera()
        {
            int nextactiveobject = m_CurrentActiveObject + 1 >= objects.Length ? 0 : m_CurrentActiveObject + 1;

            for (int i = 0; i < objects.Length; i++)
            {
                objects[i].SetActive(i == nextactiveobject);
            }

            m_CurrentActiveObject = nextactiveobject;
            camSwitchButton.text = objects[m_CurrentActiveObject].name;
        }
    }
}      
Unity 2018 Shaders and Effects Cookbook 3rd例子運作

2.修改ForcedReset.cs檔案

目錄:E:\Unity\book\Unity-2018-Shaders-and-Effects-Cookbook-Third-Edition\Unity-2018-Shaders-and-Effects-Cookbook-Third-Edition-master\Chapters 1-11\Unity Shaders and Effects\Assets\Chapter 01\Standard Assets\Utility

修改為:

using System;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityStandardAssets.CrossPlatformInput;
using UnityEngine.UI; //在此處添加

//[RequireComponent(typeof(GUITexture))]
[RequireComponent(typeof(Image))]    //此處修改
public class ForcedReset : MonoBehaviour
{
    private void Update()
    {
        // if we have forced a reset ...
        if (CrossPlatformInputManager.GetButtonDown("ResetObject"))
        {
            //... reload the scene
            SceneManager.LoadScene(SceneManager.GetSceneAt(0).path);
        }
    }
}      

運作結果