//tips
//ボタンが急遽使用できなくなった際の注意点
今回急遽canvas上のボタンが使用できなくなったので原因を調べたらcanvasのレイヤー被りであることがわかったボタンが載っているcanvasレイヤーを最大にして、他の値を下げた。
以前生じたボタン関係のトラブルではrotationのz値ではなく、y値で設置したことで押せなくなったことやボタンにEventTriggerコンポーネントを入れていなかったこと、playerのスクリプト変更によりfunctionの部分が外れていたことなどがある。
//spriteのオブジェクト追尾
オブジェクト示すためのspriteはわざわざワールド座標で設定する必要はなく、設定したいオブジェクトの子要素として生成すれば、オブジェクトの追尾を行うspriteとなる。
//指示オブジェクトの管理
テキストの文言に対応して発生させる指示オブジェクトを時間ではなくクリックカウントで管理する。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TextManager : MonoBehaviour
{
[SerializeField] GameObject test;
[SerializeField] GameObject test1;
[SerializeField] GameObject test2;
[SerializeField] GameObject test3;
[SerializeField] GameObject test4;
int count = 0;
void Update()
{
if (Input.anyKeyDown)
{
count++;
}
if (count == 0)
{
//ゲームオブジェクト表示→非表示
test.SetActive(true);
}
if (count == 1)
{
//ゲームオブジェクト表示→非表示
test1.SetActive(true);
test.SetActive(false);
}
if (count == 2)
{
//ゲームオブジェクト表示→非表示
test2.SetActive(true);
}
if (count == 3)
{
//ゲームオブジェクト表示→非表示
test2.SetActive(false);
}
if(count==4)
{
//ゲームオブジェクト表示→非表示
test3.SetActive(false);
test4.SetActive(false);
}
}
}
ただ、こちらのスクリプトを搭載したからか、なぜかシーンの移行中に固まるようになってしまったので現在要因を確認中。
もしかしたらsetactiveを使用せずに透明化させてしまった方が負担は少ないのかもしれない。
//オブジェクトの移動の優先順位 animator>Vector3.Lerp
Vector3.Lerpが発動しない要因が解明された。
問題点としては、Vector3.Lerpのスクリプトと一緒にanimatorをアタッチしており、animatorの動きが優先されることにあった。
animatorを削除したら無事に移動を行えるようになった。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Liner : MonoBehaviour
{
public RectTransform startMarker;
public RectTransform endMarker;
// スピード
public float speed = 1.0F;
//二点間の距離を入れる
private float distance_two;
void Start()
{
//二点間の距離を代入(スピード調整に使う)
distance_two = Vector3.Distance(startMarker.position, endMarker.position);
}
void Update()
{
// 現在の位置
float present_Location = (Time.time * speed) / distance_two;
// オブジェクトの移動
transform.position = Vector3.Lerp(startMarker.position, endMarker.position, present_Location);
}
}
//Unityアプリ横画面固定の方法
Unity上部にあるFileのPlayer Settingで「Allowed Orientations for Auto Rotation」から設定。
メニューバーのFile → Build Settings→Player Settingsの中のResolution And Presentation の「Allowed Orientation for Auto Rotation」の設定を変更。
Portrait 縦画面、Portrait Upside Down 縦画面で下部を上、Landscape Right 右側面を上、Landscape Left 左側面を上なので、Landscape RightまたはLandscape Leftを選べば良い。
Iosは上記で問題なさそうだが、Androidでは上記で設定できない問題もあるとのこと。詳細は下記参照。
https://qiita.com/haifuri/items/d772bc3d3db98ec090b2
//統合内容最新版