pixelboyz logo
Desarrollo de Videojuegos

Primeros pasos con UnrealCLR

Primeros pasos con UnrealCLR

Índice de contenido


¿Te encanta Unreal Engine pero te gustaría poder trabajar con el lenguaje de programación C#? Hace poco más de un año vimos la Proyecto USharp que lamentablemente parece haber sido abandonado. Afortunadamente hay otro proyecto, irrealCLR que ha recorrido un largo camino en un período de tiempo muy corto. En este tutorial, veremos los conceptos básicos para comenzar a utilizar UnrealCLR. Hay algunas cosas que debe tener instaladas antes de comenzar.

El primer requisito más obvio es Unreal Engine, la versión más reciente (4.25.3) al momento de escribir este artículo. También debe tener instalada su cadena de compilación nativa (esto está disponible para Windows, Linux y Mac, por lo que cambiará de una plataforma a otra), en Windows eso significa usar Visual Studio 2017 o nuevo, el la versión comunitaria está bien. también necesitas tener Núcleo DotNet instalado así como un cliente de git.

Comenzamos con la creación de un nuevo proyecto en Unreal Engine. Crear un nuevo proyecto de juego:

Una plantilla en blanco está bien, aunque en realidad no importa tanto.

Seleccione la plantilla de Unreal Engine

Los valores predeterminados están bien, apéguese a Blueprints para el tipo.

Configurar el tipo de proyecto UE4

Deje que Unreal cree el proyecto, luego apáguelo ya que es el momento de configuración de UnrealCLR. Ahora haga clic derecho en su proyecto recién creado y elija Mostrar en carpeta.

Mis proyectos en UE se muestran en la carpeta

Esto abrirá el proyecto en el Explorador de Windows, seleccione la ubicación, copie y pegue y cierre esta ventana.

Ruta del proyecto en el Explorador de Windows

Ahora es el momento de instalar UnrealCLR, copie la dirección de git de https://github.com/nxrighthere/UnrealCLR (https://github.com/nxrighthere/UnrealCLR.git)

Abra un símbolo del sistema y luego clone ese repositorio en un directorio permanente (la instalación persistirá en esta carpeta). Simplemente ejecuta:

clon de git https://github.com/nxrighthere/UnrealCLR.git

Próximo

cd UnrealCLR(+versión)instalar

ejecutar dotnet

Esto ejecutará el instalador, lo primero que debe hacer es pegar la ruta al Proyecto Unreal Engine que copiamos anteriormente.

Proceso de instalación de UnrealCLR.

Responda S a todas las preguntas restantes y deje que finalice la instalación. Ahora cargue su proyecto Unreal Engine nuevamente y se le pedirá que construya el módulo UnrealCLR faltante, diga que sí. Si esta parte falla, la configuración de compilación no está configurada correctamente.

Construir el módulo UnrealCLR faltante

Una vez que su proyecto esté cargado, seleccione Archivo->Abrir nivel… luego elija Pruebas en la carpeta Pruebas.

Cargando el nivel de Pruebas

Ahora puede presionar el ícono Reproducir y ver un ejemplo con C# en acción:

Ejemplo alimentado por AC# en Unreal usando UnrealCLR

Puede ver cómo se inicia el nivel usando Blueprints->Open Level Blueprint

Planos planos de nivel abierto

En el editor de Blueprint, presione el ícono Detener si se está ejecutando, luego puede seleccionar el ejemplo activo en la variable Sistemas de prueba:

Cambiar el ejemplo en ejecución

Ahora puede seleccionar un ejemplo diferente en el lado derecho de la pantalla.

Elegir un ejemplo de C# diferente

Entonces, ¿dónde exactamente está controlando esto el código fuente? Los proyectos de prueba se encuentran en la carpeta UnrealCLR. en mi caso eso es C:tempUnrealCLR-1.14SourceManagedPruebas. El siguiente por ejemplo es InstancedStaticMeshes.csel primer ejemplo con los cubos giratorios.

using System;
using System.Drawing;
using System.Numerics;
using System.Reflection;
using UnrealEngine.Framework;

namespace UnrealEngine.Tests {
	public static class InstancedStaticMeshes {
		private const int maxCubes = 200;
		private static Actor actor = new Actor("InstancedCubes");
		private static SceneComponent sceneComponent = new SceneComponent(actor);
		private static Transform[] transforms = new Transform[maxCubes];
		private static InstancedStaticMeshComponent instancedStaticMeshComponent = new InstancedStaticMeshComponent(actor, setAsRoot: true);
		private static Material material = Material.Load("/Game/Tests/BasicMaterial");
		private static float rotationSpeed = 2.5f;

		public static void OnBeginPlay() {
			Debug.AddOnScreenMessage(-1, 3.0f, Color.LightGreen, MethodBase.GetCurrentMethod().DeclaringType + " system started!");

			World.GetFirstPlayerController().SetViewTarget(World.GetActor<Camera>("MainCamera"));

			instancedStaticMeshComponent.SetStaticMesh(StaticMesh.Cube);
			instancedStaticMeshComponent.SetMaterial(0, material);
			instancedStaticMeshComponent.CreateAndSetMaterialInstanceDynamic(0).SetVectorParameterValue("Color", LinearColor.White);

			for (int i = 0; i < maxCubes; i++) {
				sceneComponent.SetRelativeLocation(new Vector3(150.0f * i, 50.0f * i, 100.0f * i));
				sceneComponent.SetRelativeRotation(Maths.CreateFromYawPitchRoll(5.0f * i, 0.0f, 0.0f));
				sceneComponent.AddLocalOffset(new Vector3(15.0f * i, 20.0f * i, 25.0f * i));
				sceneComponent.GetTransform(ref transforms[i]);
				instancedStaticMeshComponent.AddInstance(transforms[i]);
			}

			Debug.AddOnScreenMessage(-1, 3.0f, Color.LightGreen, "Instances are created! Number of instances: " + instancedStaticMeshComponent.InstanceCount);
		}

		public static void OnEndPlay() => Debug.ClearOnScreenMessages();

		public static void OnTick() {
			Debug.AddOnScreenMessage(1, 1.0f, Color.SkyBlue, "Frame number: " + Engine.FrameNumber);

			float deltaTime = World.DeltaTime;
			Quaternion deltaRotation = Maths.CreateFromYawPitchRoll(rotationSpeed * deltaTime, rotationSpeed * deltaTime, rotationSpeed * deltaTime);

			for (int i = 0; i < maxCubes; i++) {
				sceneComponent.SetWorldTransform(transforms[i]);
				sceneComponent.AddLocalRotation(deltaRotation);
				sceneComponent.GetTransform(ref transforms[i]);

				instancedStaticMeshComponent.UpdateInstanceTransform(i, transforms[i], markRenderStateDirty: i == maxCubes - 1);
			}
		}
	}
}

Como puede ver, la lógica de su juego se implementa mediante una serie de funciones de devolución de llamada llamadas por el motor. Puedes aprender más sobre el modelo de programación en el manual. Obtén más información sobre UnrealCLR y cómo comenzar en el video debajo.



Source link

Tags :
con,pasos,Primeros,UnrealCLR

Comparte :

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *