運作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打開書中源碼,本書作者也在官方給出了使用方法
2. 點選“ Unity 2018 Shaders and”
作者指導我們運作書中的第一個程式
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”
3.編譯錯誤
4.修改源碼
輕按兩下第一個錯誤,會自動打開你的vs2015~vs2019,看你機器上裝個哪個版本的vs,我這裡打開的是vs2019
把
public GUIText camSwitchButton;
改成
public UnityEngine.UI.Text camSwitchButton;
5.運作源碼
Unity2021版本中修改源代碼
如果你使用的是Unity2021版本,按照前面的方法修改源碼依然報錯
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;
}
}
}
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);
}
}
}