Как я могу управлять определенной дверью/дверями и запирать/разблокировать дверь/двери вместо глобального сценария для вC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу управлять определенной дверью/дверями и запирать/разблокировать дверь/двери вместо глобального сценария для в

Сообщение Anonymous »

Этот скрипт прикрепляется к пустому игровому объекту и управляет всеми дверями в сцене:

Код: Выделить всё

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DoorsLockManager : MonoBehaviour
{
public bool locked;
public bool lockStateRealTime = false;
public Renderer rend;
public HoriDoorManager doorManager;

private Shader unlitcolor;
private GameObject[] doorPlanes;

private void Start()
{
doorPlanes = GameObject.FindGameObjectsWithTag("DoorPlane");
ChangeColors(new Color32(255, 0, 0, 255), new Color32(0, 255, 0, 255));
}

private void ChangeMaterialSettings()
{
unlitcolor = Shader.Find("Unlit/Color");
rend.material.shader = unlitcolor;
rend.material.SetFloat("_Metallic", 1);
}

private void ChangeColors(Color32 lockedColor, Color32 unlockedColor)
{
for (int i = 0; i < doorPlanes.Length; i++)
{
rend = doorPlanes[i].GetComponent();
ChangeMaterialSettings();
if (locked)
{
doorManager.doorLockState = true;
rend.material.color = lockedColor;
}
else
{
doorManager.doorLockState = false;
rend.material.color = unlockedColor;
}
}
}

// Update is called once per frame
void Update()
{
if (lockStateRealTime)
{
ChangeColors(new Color32(255, 0, 0, 255), new Color32(0, 255, 0, 255));
lockStateRealTime = false;
}
}
}
А это скрипт HoriDoorManager:

Код: Выделить всё

using UnityEngine;
using System.Collections;

public class HoriDoorManager : MonoBehaviour
{
public DoorHori door1;
public DoorHori door2;
public bool doorLockState;

void OnTriggerEnter()
{

if (doorLockState == false)
{
if (door1 != null)
{
door1.OpenDoor();
}

if (door2 != null)
{
door2.OpenDoor();
}
}
}
}
Но теперь в моей игре мне нужно запирать и открывать только определенные двери. Например, если у меня 20 дверей, мне нужно, чтобы 3 из них были разблокированы при запуске игры.

Как лучше всего контролировать определенные двери перед запуском игры? ?

Основная цель в дальнейшем — сделать как-то наглядную карту дверей или даже всей моей космической станции в игре и иметь возможность управлять объектами через карту .

Динамическая карта.

Подробнее здесь: https://stackoverflow.com/questions/547 ... d-a-global
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»