分類 Unity 下的文章

今天用了animaiton編技能效果, 上次使用已經是 2013年的時候了, 測試了下就上手, 但奇怪的是 image.sprite 的更改一直無效, 可以看到 image.sprite 上面已經紀錄了不同 frame 下的 sprite, 但 run 起來就是無效
12683-tevouz8zewn.png

查了下發現不能用老版 animation 必須改用 animator, 因為 ugui.image 是在老版後面才出現的功能, unity 沒有回頭去更新 animation 功能, 下面我們就來新增新版本試試看

老版本跟新版本區別在創建流程不同跟添加 component 不一樣

老版本是在 GameObject 新增 Animation Component, 然後開啟 Windows -> Animation -> Animation, Create 新增 Animation Clip, 這樣就是使用 animation 運行
95395-9d3yoapblor.png

如果要搭配 animator, 則 GameObject 無須新增, 直接開啟 Windows -> Animation -> Animation, Create 新增 Animation Clip, 查看 unity 會新增 animation clip 跟 animation controller 兩個檔案並且 GameObject 是新增了 Animator Component, 在這個情況下去編輯 Image.Sprite 就正常
69384-15edr27eixv.png

測試某個插件導入到項目中出現問題, 一般這個問題是因為版本不匹配造成的, 因為直接比對了兩項目的 package 將差異 "com.unity.render-pipelines.universal": "10.6.0", 加入目前項目就出現這個問題
71182-71w3zzm3fdi.png

需要查詢 com.unity.render-pipelines.universal 對應 unity 版本, 在官網的插件中選擇版本下拉清單可以查看到對應 unity 版本
42430-b69irldze1.png

隨便改成了 12.0.0 版本, 目測服務器沒有這個版本
00751-06v7xt3j594u.png

查看 Package Manager 顯示是 not found
17397-j8bvfin3ytk.png

再切回去官網查目前最新 12.1.15, 但還是 not found
08571-n49kvo77s08.png

後來打開 Package Manager 查詢支持, 名字是 Universal RP, 版本 12.1.7 執行 import
73922-hnjxcthq92n.png

import 完成後出現錯誤, 場景變紫色

Shader error in Couldn't open include file 'Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl'. at line 59

68784-h0jk21jiwpf.png

這是URP升級造成的, 生成一個URP Asset如下
40719-jc9u8iplj6.png

開啟 Player Settingg -> Graphics, 將 URP Asset 拖拉近來, 再回到場景就好了
78969-krctobrgnjn.png

參考:
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.1/manual/index.html
https://blog.csdn.net/q764424567/article/details/133927994

今天遇到一個奇怪的問題, 將素材用 texture pack 導入到 unity, 要使用 Sprite editor 設定 border, 發現左下角這個素材一直點不到, 不管怎麼點綠色的選取都會選到最上方的素材, 而且這時候會發現有兩個綠色選取框, 正常的情況應該是像右側圖一樣.

84275-af0y56k7lx.png

89856-gp6byp8kc5.png

測試換圖發現就是某幾個素材有毛病, 一開始以為是 alpha 間格太小, 調整了 texture packer 設定還是沒用, 最後想說自己修改 sprite 設定看能不能解決問題, 結果發現了奇怪的地方

Sprite Editor 修改的配置最終是在 Atlas_CardPK.png.meta 裡面的, 而 texture packer 導出的是 Atlas_CardPK.tpsheet, 修改這個沒有任何效果

而在 Atlas_CardPK.png.meta 發現了出問題的地方, 如下圖, SpriteID: 00000000000000000800000000000000, InternalID: 0
23889-f0owxct046.png

這時候把 SpriteID 自行修改附值, 修改沒有重複的隨意值如下
10418-fhckta5d7y8.png

切換回 unity 開啟 Sprite Editor 隨便修改一個值點 Apply , 再切回去 Atlas_CardPK.png.meta 發現 unity 已經自動修改 SpriteID, 之後 texture packer 再重新生成倒出資源都不會有問題
37710-ozqhu1bsu1e.png

這個問題應該是 unity temp 緩存的 uuid 有問題才會造成 texture packer 匯出資源無法獲取正常 SpriteID, 只要生成正常了就好了

用了網上QRCode版本包 QR CodeBarcode Scanner and Generator 4.6.unitypackage

一切都做得差不多了打包android測試結果發現了問題, 如下

Unable to load DLL 'EasyWebCam'. Tried the load the following dynamic libraries: Unable to load
31742-qq0fkbstg8o.png

測試開了新項目只導入package發現是可以正常運行的, 後來查看 player 設定發現新項目只有armv7 並沒有開啟 armv8, 而且查看導入的package內容也發現lib庫只有v7a的
30885-awj70pxcbp8.png

後來查閱最新版本購買使用問題解決了

為了一勞永逸解決測試轟炸超人手機上虛擬搖桿問題, 想了很久剛好還有一把庫存的手把,於是
決定直接在PC上接入XBox手把

XBox手把配置如下
41942-f5yo4cqbrmd.png

我們要用到X axis, Y axis 來作為測試用, 必須是可以圓滑操控的

在 Unity 開啟 Input Setting , 先新增兩組設定, 再 Copy "Horizontal" 並貼在新增的配置上
82959-11k6lbsgcwri.png

新增的配置如下, 將
[Horizontal]
Type: Joystick Axis
Axis: X axis
Joy Num: Get Motion form all Joysticks

[Vertical]
Type: Joystick Axis
Axis: Y axis
Joy Num: Get Motion form all Joysticks
76976-1fgin4qaid4.png

接著寫一段代碼測試, 沒有問題就可以開始用
86113-3tyczsxqew3.png